Commit graph

11724 commits

Author SHA1 Message Date
toasterbabe
011af0daff Tweaks to some sections of the code that recognise what shields the player has. Specifically:
* introducing the new friend, SH_FORCEHP (which is used as a bitmask to get the extra hitpoints of a force-shield user)
* P_DamageMobj now considers the unimplemented shield constants as well as the implemented ones.
2016-09-30 12:15:22 +01: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
toasterbabe
041347bb6a eslopeless compiling fix 2016-09-30 01:26:23 +01:00
toasterbabe
d6a404e1ef * On Mystic's reccomendation - an alternate method which has the direction to shoot off based on the direction you're moving, not the direction you're holding.
* When not pressing any direction, you now go backwards by default - to emphasise that this is primarily for defensive, not offensive, purposes.
* The camera can now handle the player going backwards without them going completely off-screen.
* Fixed some overzealous checks.
2016-09-30 00:34:17 +01:00
toasterbabe
3eb3caacd5 Tweaked the elemental shield's piercing ability. Specifically:
* The spinfire ring is now capable of damaging enemies. (god, what a terrible hack this is)
* When ground pounding, you now bounce off the floor a little bit to make the ability less spammable.
2016-09-29 21:25:15 +01:00
toasterbabe
34d56561e4 Fixed MORE problems with landing on slopes. 2016-09-29 20:44:05 +01:00
toasterbabe
accd8bc5bd Minor fixes. Notably - no longer "deletes gravity" when hitting a slope mid-dash. 2016-09-29 20:36:08 +01:00
toasterbabe
35dda1cd72 Replaced the Force Shield's shitty drop dash I coded with a much more interesting and experimental ability.
* The Dodge Dash
* Allows you to dash - no control, no falling, no key response - for 2 + (number of extra shield hitpoints) tics.
* If you're holding movement keys down, you dash in the direction you're holding - otherwise, you dash directly forward.
* You're spinning (spindash spin, not jump spin) until your dash is over, then your momentum is cut down significantly and you end up in falling frames.
* It may not necessarily be super useful for Sonic, but it helps the other characters.
* http://gfycat.com/BogusFailingFritillarybutterfly
* http://gfycat.com/PoliticalIdealisticBallpython (outdated speed, shows any direction)
2016-09-29 20:02:58 +01:00
toasterbabe
bf01e9e5c3 Bustable material updated to:
* Take advantage of FF_MIDDLESTARTCHANCE.
* Be bound to the space of a slope.
2016-09-29 14:23:58 +01:00
toasterbabe
7a8c892233 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into gfz3_laser 2016-09-29 13:36:50 +01:00
toasterbabe
0cbbe3a3b3 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_alignment_revamp 2016-09-29 13:36:20 +01:00
toasterbabe
8f181abbb2 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into flat_alignment_revamp
# Conflicts:
#	src/p_mobj.c
#	src/p_spec.c
2016-09-29 13:34:13 +01: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
5a048df3d5 Messed up the indentation royally. 2016-09-29 13:07:24 +01:00
toasterbabe
c786dbda78 Improved the way GFZ3 Eggman slows down in the air when MF2_SKULLFLYing. 2016-09-29 13:06:07 +01:00
toasterbabe
7e8f7a59d1 This code never ran anyways, so. 2016-09-29 12:42:26 +01:00
toasterbabe
bf7ed0b9e9 I call this... the GFZ3 Unfuckening.
* GFZ3 Eggmobile's laser won't change its angle when you move left and right anymore.
    * Changed because its ability to move quickly was extremely punishing for new players (see ProJared's youtube video on the matter).
    * http://gfycat.com/PassionateUnknownAgama (the twitching on the third laser has been fixed since this was recorded)
* GFZ3 Eggmobile will, when too far away from the ground and moving upwards, slow itself down vertically.
    * This was punishing and annoying for both old and new players alike.
    * http://gfycat.com/ShabbyAncientEarthworm (old values - the typical settling height is slightly lower now)
2016-09-29 12:36:20 +01:00
toasterbabe
8445a1068e attempt 2016-09-28 16:31:14 +01:00
toasterbabe
99f60544db Fixed various issues arising from collision with exclusively horizontal springs. Of note:
* If you hold down your jump button whilst jumping into it, you no longer immediately use your ability.
* Characters with CA_DOUBLEJUMP and CA2_MULTIABILITY no longer lose track of their jump count.
2016-09-28 16:26:29 +01:00
toasterbabe
9a2dd50e4d ...I should really check what I'm doing more thoroughly, sorry. 2016-09-27 19:03:57 +01:00
toasterbabe
a8be1e6b7d Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into shield-actions
# Conflicts:
#	src/d_player.h
#	src/p_inter.c
#	src/p_mobj.c
#	src/p_user.c
2016-09-27 18:24:53 +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
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
8881a413f3 Fixed that really annoying bug where you disappear when spindashing on top of a FOF whilst wearing a multi-layer shield.
(the problem was that MT_OVERLAY's default radius and height were never getting changed from 1*FRACUNIT, and that meant that when you spindashed, the game considered it completely below the surface of the flat you were standing on. Since you're not usually clipped on flats that don't belong to FOFs, we didn't notice this issue sooner.)
2016-09-27 17:17:23 +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
Monster Iestyn
54b35c3975 Fix GME library path, consider 64-bit systems for png/zlib/SDL2 paths/libraries 2016-09-26 21:58:25 +01:00
toasterbabe
5f4f6fdac8 Public remake of a merge request I shouldn't have put in Internal in the first place. 2016-09-26 18:35:13 +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
Monster Iestyn
27acd8c3ac Added SRB2_CONFIG_USE_INTERNAL_LIBRARIES option (defaults to off right now), some WIP work on making it ...actually do what it says on the tin.
Basically, it manually sets *_FOUND, *_INCLUDE_DIRS and *_LIBRARIES instead of using find_package. Frankly I have no idea how well what I've done works currently though, not even sure if I've set the _LIBRARIES variables correctly. Again, it's WIP work, this can probably be fixed eventually I suppose.
2016-09-25 20:33:07 +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
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