Commit graph

1813 commits

Author SHA1 Message Date
Inuyasha
0fdfb1a472 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal into animate_global
# Conflicts:
#	src/p_pspr.h
2016-10-03 00:27:49 -07:00
Monster Iestyn
22d772f08a Merge branch 'flat_sprites' into 'master'
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
2016-10-02 14:47:01 -04:00
toasterbabe
5614ff5691 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_sprites
# Conflicts:
#	src/p_enemy.c
#	src/p_mobj.c
2016-10-02 19:38:53 +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
Monster Iestyn
20555c8887 Merge branch 'public_next' 2016-09-30 16:07:26 +01:00
Monster Iestyn
2c00c89a98 Merge branch 'next' of git@git.magicalgirl.moe:STJr/SRB2.git into public_next 2016-09-30 16:06:45 +01:00
Inuyasha
64e8c8581e add missing prototypes 2016-09-30 05:04:08 -07:00
Inuyasha
afb22b968b FF_GLOBALANIM for synced animations
and a few other frame flag changes
2016-09-30 03:20:57 -07:00
Inuyasha
7997753d24 Merge branch 'repeat-monitors' into 'master'
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
2016-09-29 22:40:52 -04:00
Inuyasha
074cc9b965 Dehacked, as usual 2016-09-29 19:32:21 -07:00
Inuyasha
ae542e616a Fixed sprite conflict BS
Also added the eggman goldbox back
2016-09-29 19:24:05 -07:00
Inuyasha
f1b8bfcfe7 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal into repeat-monitors
# Conflicts:
#	src/info.c
#	src/p_map.c
2016-09-29 18:08:50 -07:00
Inuyasha
92da141394 Yes, that stupid off-by-one due to spawning objects in the middle of thinkers being run still applies. 2016-09-29 17:27:33 -07:00
Inuyasha
d7aae15a6f Merge branch 'animated-sky' into 'master'
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
2016-09-29 08:34:12 -04: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
Monster Iestyn
31d3c09d15 Merge branch 's_skinprovements' into 'master'
S_SKIN-provements

I like setting up merge requests before they're ready so I can do code comparisons. Yes, I know it's possible through looking at the branch itself, but merge requests are nicer.

New character abilities:
* CA_TWINSPIN - basically the insta shield but without the invincibility. Think rosy.wad. Destroys spikes, enemies and any bustable blocks (even Knuckles ones!) on contact.
* CA2_MELEE - dash forwards and upwards at S_SKIN's maxdash and mindash respectively, destroys spikes, enemies and any bustable blocks (even Knuckles ones!) on contact.

S_SKIN parameters (all available read-only to Lua):
* "availability" - defines the Unlockable number that has to become unlocked in order to play as the character. (Note: if you don't want this unlockable to show up in the unlockables menu, use type SECRET_NONE in hardcode, or None in SOC. Otherwise, the only other reasonable option is SECRET_HEADER.) Defaults to 0 if not given, or given a number over MAXUNLOCKABLES - which means playable on first boot as usual. The name of the unlockable referred to is set to the character's realname once this is read.
* "radius" - defines the radius of this player under all circumstances as an int, ignoring scale. Defaults to 16. ("radius = 48" means 48*FRACUNIT)
* "height" - defines the height of this player under regular circumstances as an int, ignoring scale. Defaults to 48. ("height = 12" means 12*FRACUNIT)
* "spinheight" - defines the height of this player under spinning/gliding/flying/etc circumstances as an int, ignoring scale. Defaults to 32. ("spinheight = 64" means 64*FRACUNIT)
* "shieldscale" - defines the scale of the shield sprite relative to the player's, as a float. Defaults to 1. ("shieldscale = 1.5" means 3*FRACUNIT/2) - see http://i.imgur.com/BQ5DhKC.png for justification
* "camerascale" - defines the scale of cam_dist and cam_height (the consvars) relative to normal, as a float. Defaults to 1. ("camerascale = 0.5" means FRACUNIT/2)
* "prefoppositecolor" - The sign background colour used when you're using the skin's prefcolor. 0 (the default) means use the Color_Opposite array for all colours.
* "supercolor" - The base colour you flash when super! Irrelevant if you don't have SF_SUPER. See constants below.
* Supports defining sound replacements as both DSNAME and sfx_name formats.
* Default revitem is now MT_NULL instead of MT_THOK to match all characters in SRB2 right now.
* Thanks to MI, all skin flags can be set via "name = 1" or "name = true" or "name = yes" like in 2.0 and before, AS WELL as the current "flags = SF_NAME"

Super colours:
* SKINCOLOR_SUPERSILVER1-5 - "Silver" - done for fun, looks a little bit like Nazo maybe if you're into that kind of thing
* SKINCOLOR_SUPERRED1-5 - "Red" - I originally neglected to do a proper port of Knuckles' super flash to the Reduced Palette. Here, I've corrected that.
* SKINCOLOR_SUPERORANGE1-5 - "Orange" - Ditto, but for Tails. I avoided doing it because Match Super was dying, so why put in the effort? FOR MODDERS!
* SKINCOLOR_SUPERGOLD1-5 - "Gold" - Just a renamed Sonic super to fit the new naming pattern.
* SKINCOLOR_SUPERPERIDOT1-5 - "Peridot" - Nyeheheheheheh.
* SKINCOLOR_SUPERCYAN1-5 - "Cyan" - @Inuyasha wanted me to do enough colours such that you can have a continuous rainbow of super forms.
* SKINCOLOR_SUPERPURPLE1-5 - "Purple" - So... I picked some of my favourite skincolours that were wide enough apart, since these take a while to do.
* SKINCOLOR_SUPERRUST1-5 - "Rust" - One of the first ones I did, because I liked how S3nK Mecha Sonic's super form wasn't yellow. (For Metal Sonic.)
* SKINCOLOR_SUPERTAN1-5 - "Tan" - Geez, I would've loved to call this champagne... [Here's a reference image for the reasoning behind wanting to include this.](http://i.imgur.com/OB18Cls.png)

New frame flags:
* FF_MIDDLESTARTCHANCE - For SPR2: has a 50% chance of starting the animation halfway in. For FF_ANIMATE: has an equal chance of starting on any frame between the frame number and frame number plus var1. For normal frames: Does nothing.
* FF_SPR2ENDSTATE - if var1 == S_NULL and the object is a player, don't loop, just stop incrementing the frames. Otherwise, go to the state represented by var1. Only works for SPR2 animations.

New skin flags:
* SF_NOJUMPSPIN - Player's height is full whilst jumping, SPR2_JUMP defaults to SPR2_SPNG instead of SPR2_SPIN, and the player goes into fall frames if they start moving downwards or use their ability.
* SF_NOJUMPDAMAGE - Ala rosy.wad, don't damage enemies, etc when jumping into them.
* SF_STOMPDAMAGE - Just for fun. Ala in Mario, always damage enemies when you land on top of them (your gravity reference, not theirs).
* SF_MARIODAMAGE - SF_NOJUMPDAMAGE|SF_STOMPDAMAGE is reasonably accurate to the Mario games, and might as well be surfaced as such.
* SF_MACHINE - creates explosions whilst dying, creates sparks whilst drowning, different drowning numbers and sounds. Requires new patch.dta.

Character select screen updates:
* All disabled characters - through SOC or unlock (via the above availability parameter) - are outright removed (at least visibly). No awkward gap in scrolling - no hint they were ever there in the first place. Character select selections without valid characters are also hidden.
* Vertical loop - the character select images are visually continuous. No matter where you are in the chain, you'll always see a hint of the character above or below your current selection. (This is as long as you have more than one character on the select screen - otherwise you'll just see that one only.)
* Smooth scrolling - Moto and Prime showed me [a gfy](https://gfycat.com/AshamedEsteemedHammerheadbird) from back during 2.1 development where it was super smooth. I didn't make it as slow as that one, but the smoothness was easy to add and the reason it was removed previously - gaps in the character select leading to varying speeds - is no longer relevant.
* [Gfy of example](https://gfycat.com/RealBrightJay) - Metal Sonic is hidden both to show off it's capable of hiding to 'devs, and to make this safe to show off to the public!
* Fallback for a zero character select screen: just try to pick the first character, whatever it is! Just like when it's forcecharacter...

Character behaviour changes:
* CA2_NONE/CA2_MULTIABILITY no longer forces nojumpspin.
* PA_JUMP - for jumping (only when going upwards in the case of SF_NOJUMPSPIN, otherwise it's PA_FALL).
* Instead of not spawning the revitem if your SPR2_ is SPR2_DASH, don't spawn it if it's set to 0.
* Don't get stuck in spindash frames if your maxdash is 0, and don't flash rolling frames if you're on goop.
* SPR2_SWIM (and S_PLAY_SWIM) for using CA_FLY/SWIM underwater.
* CA_SWIM users no longer forced to run on water.
* Drowning characters fall off the screen slower.
* CA_DASHMODE users can destroy normal spinbust blocks whilst they're dashing.
* CA_DOUBLEJUMP and CA2_MULTIABILITY go together nicer now. Each additional jump (up to the (actionspeed>>fracbits)nd jump) has a jump height closer and closer to zero, much like Kirby games.
* Fixed bug where being pushed off a platform whilst charging a spindash would leave you in your charging frames instead of your rolling ones when you hit the ground (http://gfycat.com/MassiveThreadbareItalianbrownbear)
* Fixed bug where spindashing on top of a bubble spawnpoint led to you being able to move around in spindash frames (no gif since obvious desired behaviour is obvious)
* Spindash animation speeds up the faster you'll shoot off.
* The spin charging mechanism is now scale-independent, and only multiplies by scale when shooting off - less FixedMul calls, and potentially deals with weird quirks of changing scale whilst spindashing that nobody's discovered because there's no place to find that in the main game!
* Default maxdash is now 70
* SPR2_SMSL renamed to SPR2_SSTN (stun)
* player->powers[pw_carry] replaces a bunch of carrying stuff.
    * PF_ITEMHANG -> CR_GENERIC
    * PF_CARRIED -> CR_PLAYER
    * (mo->tracer == MT_TUBEWAYPOINT) -> CR_ZOOMTUBE
    * PF_ROPEHANG -> CR_ROPEHANG
    * PF_MACESPIN -> CR_MACESPIN
* Rope hangs and zoom tubes are a LOT smoother. http://gfycat.com/BewitchedIcyHuman
* PF_CANCARRY replaces all the terrible checks for flying, and is given and removed properly.
* Turning "god on" in the console whilst super (and devmode is off) will result in... [Well...](http://gfycat.com/DownrightMemorableDwarfrabbit) ~~(if no fun is allowed let me know and i'll put this behind the #DEVELOP define)~~

Multiplayer consvar changes:
* forceskin now takes a string instead of a number, and requires you to have unlocked that skin to set it.

A comprehensive list of all the circumstances characters are available under:
* If they don't have a respective unlockable.
* If they do have a respective unlockable, but you've unlocked it.
* If you're watching somebody's record attack footage.
* If you're forced to by the map you're playing's level header.
* If you're playing multiplayer, and the host or admin (who must have unlocked the character first, or be running a dedicated server) sets the forceskin console variable to that character.

Character-related NiGHTS stuff:
* Skin-based SPR2_ system instead of Sonic's sprites for everybody.
* If you can turn SF_SUPER, flash your skin's supercolor, otherwise be your normal color.
* If your skin doesn't have a SPR2_NGT0 (horizontal fly), use Sonic's sprites and colour flashing rules (this will hopefully be replaced by 2.2 with sprites of NiGHTS themselves)
* SPR2_NTRN, SPR2_NSTD, SPR2_NFLT, SPR2_NPAN, SPR2_NPUL, SPR2_NATK, SPR2_NGT0-C, SPR2_DRL0-C. (number of flight directions have been upped for EXTRA SMOOTHNESS)

Non-character-related NiGHTS stuff:
* Rob requested the following link colour sequence at unix time 1470866042, and I had the relevant file open: Emerald, Aqua, Cyan, Blue, Pastel, Purple, Magenta, Rosy, Red, Orange, Gold, Yellow, Peridot
* MT_NIGHTSCHAR made irrelevant, everything follows actor->target instead of actor->target->tracer now
* Emerald is now player->mo->tracer instead of player->mo->tracer->target
* Nightopian helpers flash for the 35 tics before they disappear
* Nights capsule makes boss explosions/noises now (I can change it back I just like it this way better)
* Drill off into the sky instead of fly up in floating pose (but no noise)

See merge request !32
2016-09-27 12:55:24 -04:00
toasterbabe
55d8b419e2 MI's last few reccomendations fixed. 2016-09-27 17:51:17 +01:00
toasterbabe
e801c581d3 Fixed off-by-one error with the relationship between FF_ANIMATE's var1/number of frames, FF_MIDDLESTARTCHANCE, and P_RandomKey. 2016-09-27 11:50:48 +01:00
toasterbabe
cf9ea19d11 Tweaked P_SetScale so it allows radii and heights set by Lua (and the skin's radius) to be kept, and tweaked the contents of the last commit to match. 2016-09-27 11:32:34 +01:00
toasterbabe
28f5e7d1bc Did I not commit this fix? Woops. 2016-09-26 12:25:10 +01:00
Inuyasha
1d71dfa5a3 animate icons using FF_ANIMATE
(this also means they last one second again, and the powerup is given after 1/2 a second, things which were lost when the flip was added)
2016-09-25 20:55:08 -07: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
9f69850c05 Basically seriously un-fucked the rope hang and zoom tube code from my experimentations (i just wanted to compare speed and distance and got carried away...) 2016-09-25 15:07:00 +01:00
Inuyasha
1a4b894589 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal into repeat-monitors
# Conflicts:
#	src/info.c
2016-09-24 23:05:01 -07:00
MonsterIestyn
3843533c24 Merge pull request #118 from ilag11111/linux-replay-fix
Fix demo recording in Linux
2016-09-24 19:54:49 +01:00
toasterbabe
50a44d96b1 Changes to bubbles for new DSZ + bubble sprites (needs new patch.dta). 2016-09-24 17:15:42 +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
da1db42b14 Forgot some compilers would complain about this. 2016-09-24 13:39:04 +01:00
toasterbabe
f933210c03 Let's simplify a lot of stuff. PF_CANCARRY instead of a horrible assortment of checks. 2016-09-24 13:18:08 +01:00
toasterbabe
eb64e4ccd9 Tightened some restrictions on Tails carry because right now the looseness leads to edge case noise spam when trying to pick up a player off a rope hang, for example. 2016-09-24 12:38:37 +01:00
toasterbabe
41b4d9c565 Fixed carry bug that I introduced a while ago. 2016-09-24 12:06:00 +01:00
toasterbabe
1de32b3dac Fixed my mistake with static rope hangs.
Also, the same smoothness changes have been ported over to zoom tubes!
2016-09-24 00:37:18 +01:00
toasterbabe
e16648a72b Introducing player->powers[pw_carry]! Also, I made rope hangs a lot smoother.
* PF_ITEMHANG -> CR_GENERIC
* PF_CARRIED -> CR_PLAYER
* (mo->tracer == MT_TUBEWAYPOINT) -> CR_ZOOMTUBE
* PF_ROPEHANG -> CR_ROPEHANG
* PF_MACESPIN -> CR_MACESPIN
2016-09-23 23:48:48 +01:00
toasterbabe
54f463ce81 Forgot dehacked.c description! 2016-09-16 17:15:16 +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
dcb82c292a Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into s_skinprovements 2016-09-12 19:23:44 +01:00
ilag11111
3b503f1336 Use function va to avoid having to delcare a new variable. Thanks MonsterIestyn. 2016-09-11 14:59:24 -07:00
ilag11111
4abfe1e8f3 Fix MinGW/AppVeyor build. 2016-09-11 10:57:14 -07:00
ilag11111
2798bd5c16 Ensure demo files will save to srb2home, where SRB2 already looks for them. 2016-09-11 10:40:49 -07:00
toasterbabe
ba78dda276 Just noticed when poking around in dashmodecode that it didn't actually get stopped from running when you were playing in CTF! 2016-09-10 22:44:28 +01:00
toasterbabe
cd0c2347df Ditto with regards to glideandclimb. 2016-09-10 21:13:51 +01:00
toasterbabe
f844fb3460 More strenous checking of ability for these animations in preparation for something I wanna try... 2016-09-10 21:00:57 +01:00
toasterbabe
fb377ad44f Minor tweaks to animations and endsigns. 2016-09-08 17:48:54 +01:00
toasterbabe
941bf8eb03 Corrected multiple oversights with swimming players dropping their friends when they shouldn't. 2016-09-08 14:38:57 +01:00
toasterbabe
df7b375f05 Corrected an oversight for horizontal springs the introduction of PA_JUMP caused. 2016-09-08 13:57:43 +01:00
Alam Ed Arias
e62c0794dc Merge branch 'next' 2016-09-05 22:17:37 -04:00
Monster Iestyn
31b9e762e1 Merge branch 'public_next'
# Conflicts:
#	src/p_mobj.c
2016-09-05 21:28:43 +01:00
Monster Iestyn
1476a4cdb4 Merge branch 'next' into public_next 2016-09-05 21:22:53 +01:00
Alam Ed Arias
b949f49c68 Merge branch 'master' into next 2016-09-04 20:51:45 -04:00