Commit graph

157 commits

Author SHA1 Message Date
toasterbabe 6e79de3de8 Patched an out-of-bounds crash with papersprites in the least resource-intensive way I could find (xiscale not fitting perfectly into frac). This will have to do until papersprites get a make-over at some point. 2017-08-11 16:00:45 +01:00
toasterbabe fe4dcee9ad fix inaccurate SC_FULLBRIGHT declarations 2017-06-26 16:30:23 +01:00
toasterbabe b2fc2e03ba * Always remove linkdraw vissprites from unsorted drawing chain.
* Make the related I_Error more descriptive and "#define PARANOIA"'d only.
2017-06-26 16:11:50 +01:00
toasterbabe dda9148e56 Fix issue with precipitation not modifying its mobj reference, resulting in Smiles' tails disappearing in CEZ3.
Also, as a result, safeguard some stuff against referencing stuff that's outside of *precipmobj_t's domain.
2017-06-26 15:53:20 +01:00
toasterbabe 59ea08ee11 * Change the order of operations such that linkdraw sprites aren't ever used for ordering comparisons with non-linkdraw sprites.
* Refactor of the unbundling to not involve modifying the next/prev links.
* Make the booleans in vissprite_t use flags stored in sprite->cut instead.
* Make the linkdrawn sprites much more linked - ie, same brightness (unless independently fullbright), same colormap, and don't draw if the tracer isn't being drawn.
* Other minor corrections.
2017-06-26 14:44:10 +01:00
toasterbabe 93dce12fce Seriously improves the reliability of the linkdraw system (in Software, the only rendering engine which actually does anything with this information), reducing the number of visual errors it produces significantly.
Of particular note: Standing in shallow pools of water as Smiles will now reliably associate the bottom half of the tails following mobj with the underwater portion of Smiles' body, and the flicking ends with his un-submerged head.

Deliberately engineered to only affect objects with MF2_LINKDRAW applied.
2017-06-25 20:46:30 +01:00
toasterbabe a625c4f725 Katana dot in hudnames, as desired. 2017-04-29 17:04:13 +01:00
toasterbabe 0c792ff67a Add missing flag reads. 2017-04-03 16:05:13 +01:00
toasterbabe 8aaf3ac851 ...copypaste failure 2017-03-19 12:49:29 +00:00
toasterbabe 7c852b575a Inu made some suggestions about the skinnamepadding stuff, so here's the fix. 2017-03-19 12:45:01 +00:00
toasterbabe 98095292d6 Rob wanted hudnames that were less than 5 padded at the front. Whilst I tested it and didn't think it was a good idea, I'm committing the code anyways lest some fool wish to try it in future. 2017-03-18 17:02:34 +00:00
toasterbabe 842c27e78b Let's not use terms like this so plainly, right? 2017-03-18 14:20:42 +00:00
toasterbabe 096921cbbf Added a bit of a fun limitation.
* Made it so (player->availabilities & 1 << skinnum) is only true if skins[skinnum] DOES have an availability method, and always false otherwise.
* This means that setting your availabilities to INT32_MAX is no longer the equivalent of having gotten all skins.
* This means we can detect and kick cheat engine script kiddies who try to fool the server that they can use everything.
* This means availabilities of 0x00 is now valid, so make it all F's for an invalid not-in-game.
2017-03-18 13:03:29 +00:00
toasterbabe 87ba3411a4 * Fixes forceskin causing desynchronisations, baby! Checks only when attempting to send.
* Makes the forceskin print more consistent with the skin print.

* Disabled the printing of availabilities.
2017-03-18 00:41:40 +00:00
toasterbabe 0060caaf1a Fixed synchronisation of skin changes and forceskin.
There's an outstanding issue - you can set forceskin to whatever you want to as the host. This needs to be fixed, but I'm commiting my successes first.
2017-03-17 23:11:32 +00:00
toasterbabe 60a2e26569 First attempt at making skin availabilities netgame-synchronised. However, I am completely unable to test this right now, since I'm on uni internet which is super locked down; in order to have it not get tangled up with anything else, I'm committing it now in a potentially broken state so that it can be reverted at a later date if necessary. 2017-03-16 18:57:42 +00:00
toasterbabe b2c0930807 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into charabilities_mk3 2017-03-14 18:12:47 +00:00
toasterbabe 7aeeb278fe Increased space in pflags (because we were getting VERY close to full capacity), which I will re-organise when this branch is closer to completion.
* PF_NIGHTSMODE is now CR_NIGHTSMODE as part of player->powers[pw_carry]. This is because it's mutually exclusive to every other "carry" type.
* PF_SUPERREADY is dead because it literally just checked for all 7 emeralds and 50 rings. That's it. You couldn't even appreciably alter its presence with Lua. That logic has been placed back in P_SuperReady.
2017-03-14 18:11:17 +00:00
Monster Iestyn 731ee115a3 Merge branch 'public_next' 2017-03-13 18:25:26 +00:00
toasterbabe e20292844d * SPR2_DRL0-C are gone. They're now (FF_SPR2SUPER|SPR2_NGT0-C). This frees up a bunch of badly-used freeslots, considering that you can't be super AND NiGHTS at the same time.
* Speaking of, actively enforced not being able to be Super and NiGHTS at the same time.
* Also on that note - SPR2_TRNS is now the NiGHTS transformation. The Super transformation is (FF_SPR2SUPER|SPR2_TRNS).
* SPR2_NPAN is now SPR2_NSTN, since it matches Super Sonic's stun animation rather than the pain animation.
* Fixed a bunch of things where Super float was handled badly with 2AM brain.
* Fixed the R_ProjectSprite error going out of spr2names' bounds.
* Fixed order of FF's in dehackéd.
* Fixed that thing where Super Sonic was blue for 1 tic after transformation, and the life icon was a blue Super Sonic.
2017-03-11 17:14:39 +00:00
toasterbabe 75ac351940 It's 2am, I'll upload the exe and player.dta to the ftp later.
* Super sprites are now deliniated via an additional S_SUPER lump between S_START and S_END. Above are normal sprites, below are super sprites. Handled internally via FF_SPR2SUPER.
* Sprite2 numbers are now appropriately limited for the data type that stores them.
* SPR2_SPIN is now SPR2_ROLL, SPR2_DASH is now SPR2_SPIN and SPR2_PEEL is now SPR2_DASH. Makes more sense, right?
2017-03-11 02:09:01 +00:00
Monster Iestyn b0f4bbb44b Played TD's Stormy Streets enough to know precipitation sprites didn't get an overflow test of their own
(various large invisible blocks used in the level cause rain to make splashes high above the main level, high enough to make ghostly rain splash sprite artifacts appear sometimes in nearby areas)
2017-03-02 19:37:21 +00:00
toasterbabe 38c7436565 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into charabilities_mk3
# Conflicts:
#	src/d_clisrv.c
2017-01-09 11:10:47 +00:00
Monster Iestyn 12ae6bb22a Merge branch 'public_next'
# Conflicts:
#	src/d_clisrv.c
#	src/r_things.c
2017-01-07 15:03:59 +00:00
toasterbabe 4a53d96099 * Fixed changing skins during differing-length sprite animations resulting in sprite errors.
* Added PF_BOUNCING to a place where it would likely be wanted.
2016-12-26 18:36:57 +00:00
Monster Iestyn 6f8969aec0 Merge branch 'spindash-dust' into 'master'
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
2016-12-13 15:15:33 -05:00
Monster Iestyn 410b55ebcd Work on FLIPX/FLIPX support:
*Added FLIPX/FLIPY support for multi-patch textures and single-patch textures without holes
*Added FLIPY support for single-patch textures with holes; I'll sort FLIPX support out later
2016-11-28 22:21:54 +00:00
Monster Iestyn f5f2542849 Go through all the polyobjects to find leftover polyobj planes to add to the draw nodes list
I'm convinced there's going to be some stupid side effects from doing this, but it's the quickest way I can fix the polyobj planes not all appearing anyway
2016-11-16 17:50:44 +00:00
Monster Iestyn 6e70acc82d Added SF_NOSPINDASHDUST to disable spindash dust 2016-11-13 22:33:57 +00:00
Alam Ed Arias 67d2211bca whitespace: cleanup 2016-11-01 15:54:52 -04:00
Monster Iestyn ff0b1d1dfa Split polyobj plane drawnode-creating code from ds->maskedtexturecol code, and add plane bounds checking 2016-10-11 22:35:46 +01:00
toasterbabe 664cfa2a9d Disabled MF2_LINKDRAW's ability to work in chains because it required modifying flags2 to prevent infinite loops, and that isn't network safe at all. 2016-10-02 18:17:23 +01:00
toasterbabe c70661186a Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_sprites
# Conflicts:
#	src/dehacked.c
#	src/p_inter.c
#	src/p_pspr.h
2016-09-27 18:11:20 +01:00
toasterbabe be0e898bae * Skin-controlled radius is no longer set each tic, only on skin change and player spawn.
* Camerascale, shieldscale, height and spinheight are now player attributes which are set to the skin attribute on skin change, not read directly from the skin.
* P_GetPlayerHeight and P_GetPlayerSpinHeight are now macros instead of functions.
* Extra protection against switching to a locked skin.
2016-09-25 18:21:52 +01:00
toasterbabe 64a9a94604 GETSPEED -> GETFRACBITS completion. woops 2016-09-25 15:23:22 +01:00
toasterbabe 28523760c3 FF_VERTICALFLIP, since I've been messing around with sprite stuff.
* flips the sprite ala MFE_VERTICALFLIP except you don't need to flip the direction of gravity for the object just to draw upside down
* stacks properly with reverse gravity
2016-09-24 14:23:00 +01:00
toasterbabe db6e7fd985 Introducing MF2_LINKDRAW! I put it in this branch because it (ab)uses some structural changes I made for papersprites.
* 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 has support for chains of MF2_LINKDRAW!
2016-09-16 17:09:33 +01:00
toasterbabe 8d8be8a7b2 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into s_skinprovements 2016-08-30 13:30:56 +01:00
toasterbabe d17843aee1 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_sprites 2016-08-26 20:48:48 +01:00
toasterbabe 8a244c1816 Nev3r helped me discover a crash caused by NAMEcLcR not loading patches into every angle lump slot.
This is the smallest possible change that fixes the crash.
2016-08-26 16:09:43 +01:00
toasterbabe 41b3b3c5bd GCC 4.6 and lower fix 2016-08-22 23:42:06 +01:00
toasterbabe c08e9674be As requested by Nev3r and VAda, seperating MF_PAPER into FF_PAPERSPRITE and MF_PAPERCOLLISION. 2016-08-20 15:15:48 +01:00
toasterbabe ef6c2510a2 Did a few things to make this better.
* Reorganised R_DrawVisSprite to do less needless variable calculation.
* Corrected some clipping oversights.
* Made a few comments clearer.
2016-08-20 12:18:00 +01:00
toasterbabe 7d5bda709a Sorting is fixed! Turns out rover isn't a FOF, it's another sprite. Thanks @RedEnchilada for noticing this oversight!!
http://gfycat.com/EsteemedPleasedDuck <-- so great
2016-08-20 03:02:40 +01:00
toasterbabe 8df146b713 An additional proper overflow check, and also a little something I forgot earlier. 2016-08-20 01:03:35 +01:00
toasterbabe 552a67200c A revert of the sorting because it produced better (but not perfect) results for paper and normal mobj interaction.
Also, I added more sortscale handling in the places where I forgot it.

I probably need some help with the maths here to get this to work nicely. http://gfycat.com/LimpAgedDowitcher
2016-08-19 15:06:10 +01:00
toasterbabe fbff05bd17 Fixed the between-objects sorting problem previously mentioned in the merge request. Now they're sorted by whichever sprite has an end closest to the camera, instead of the middle point previously used.
http://i.imgur.com/UyOKX5u.png <-- this common glitch with crawlas given MF_PAPER (THEY'RE NOT GOOD AT TURNING NEAR EDGES) used to show the behind-crawlas in front of the front-crawlas.

Unfortunately, I've just discovered this issue (which happens with the old version of the sorting code too): http://i.imgur.com/QNjbATB.png but to be fair these crawlas have gotten stuck inside the edges of this platform, so I'm not sure I can do anything about this without cutting off Sonic's feet when he stands on the ground? shrug
2016-08-19 12:26:26 +01:00
toasterbabe 7786ef43e8 Okay, did a bunch of stuff. Getting ready to create a merge request, but not quite there yet.
* MF_AMBUSH is now MF2_AMBUSH, because it's something you turn on in a map editor, not with a SOC definition.
* Where MF_AMBUSH was is now MF_PAPER.
* MF_PAPER accesses all the stuff I did previously in this branch...
* ...as well as turn on paper-thin collision detection between mobjs, which I've gotten working but isn't perfect but it's still good enough for non-solid objects!!
2016-08-18 20:09:35 +01:00
toasterbabe 430d7cfbd2 Noticed some sorting issues, so introduced the sortscale struct variable. (SORRY, NO FLAG YET) 2016-08-18 15:45:44 +01:00
toasterbabe ce8ae48222 I think this is as optimised as it's gonna get. Now onto the flag! 2016-08-18 12:55:04 +01:00