* If using twinspin and have melee ability too, go into melee landing when hitting the ground.
* Only have melee go directly forward if standing/idle, otherwise use drawangle.
Glide speed now starts at whatever speed you were traveling at prior.
If glide speed is below actionspd, the glide accelerates towards it.
When landing from a glide, player now enters a landing animation (SPR2_LAND); they cannot move in this state, but they can jump or start a spindash.
Ground-sliding after a glide can now be cancelled into the landing animation by releasing jump, where the same rules apply.
Climb speed increased x1.33.
* Prevent being able to damage enemies from below while swimming.
* Make the swim-specific bubbles happen at the hands instead of where the propeller would be.
* Improve placement/angle of swimming tails overlay.
* Immediately set flight time to 0 if a player is being carried underwater.
* Fix S_PLAY_FLY_TIRED animation being fast.
* Add moving tails to S_PLAY_SWIM animation!
* Fix autobrake happening when your controls are locked by pw_nocontrol/PF_STASIS. (Resolves#219, hopefully..?)
* Put everything in P_DoJumpStuff, instead of half in that function and half spread across the player thinker.
* Have a proper if else cascade that first tries shield abilities, then super transformation, then random abilities like CA_TELEKINESIS.
* Use this new arrangement to allow CA_TWINSPIN users to use their ability on spin if their secondary ability is CA2_MELEE (resolves#195).
* Random bugfixing. Didn't keep track of what I'd caused while working on this and what was already there, but there was a lot of it.
The only two abilities which have spin-button properties outside of the else block is CA_AIRDRILL and CA_FLY/CA_SWIM (which now also prevents you from swimming down in goowater).
* Don't allow the stage to be reloaded in G_DoReborn.
* If you do ANY spawn after the very beginning moment, you're forced to be a spectator.
* Have the "%d player%s remaining" Co-op exiting count visible at the same time as spectator controls.
* Genesis-style love and attention to the death event.
* Only visibly decrement lives/rings when you're respawning (or game over, see below).
* Faster no-button-press respawn.
* Game Over specific love.
* Animation of Level Title font coming in from the sides.
* https://cdn.discordapp.com/attachments/428262628893261828/617692325438554132/srb20067.gif
* Change gameovertics to 10 seconds instead of 15.
* Make the minimum time before you can force going to the Continue screen longer.
* Accomodate death in MP special stages as a form of exit.
* Don't have your rings or spheres reset when you die in a special stage, so that the stage isn't softlocked with the new harder limits.
* Fix a bug with CoopLives_OnChange where changing to infinite lives didn't force a game-overed player to respawn.
Also, two not-quite death things which nonetheless were relevant to change:
* Fix quitting a special stage having some of the shared spheres/rings disappear into the aether.
* Fix a warning during compilation for the Ring Penalty print.
* Make it actually look like a brake, so people can tell it's on instead of just having high friction.
* Fix it fucking with spring chains (caused by being unwittingly active for the first tic of spring collision).
* Player state upon collision with ground after rolling now sets state properly.
* Fix the thing where Knuckles can glide up a slope like it's nothing WHILE keeping things working for bouncers.
Sea Egg is majorly changed according to Mystic's ancient instructions (excepting the flying FOF rock, I cared not for fucking around with FOFs).
Specifically:
* Faster paced fight.
* Instantly travels horizontal distance.
* Fakes no longer hurt papa, and spin out like a deflating balloon when he dies.
* New attack: When surfacing, produces an electric shockwave. Replaces underwater shock. Designed for new, shallow arena.
* Support for multiple bosses in the same map distinguished by parameter.
Will upload map to fight the new battle in on the MR.
* Add more context clues to his fight, including an indicator for which laser attack is being used after chargeup.
* Make missiles able to vectorise him.
* Add another laser orb attack - vertical slice - and change the laser orb sequence to accurately reflect that horizontal is the hardest of the ones in 2.1.
* Optimise TC_BLINK, and fix an issue with TC_ALLWHITE that somehow avoided coming up in testing.
* Fix colorized bosses losing their colorization when flashing, by forcing TC_ALLWHITE.
* Remove PF_THOKKED every time a successful damage bounce occours.
* When this happens, spawn a number of particles based on thokitem at half scale! (Optimised, again, for MT_LHRT.)
* Also spawn these particles when a successful spring boost occours, as well as playing a twisted spring sound.
Also, some other related tweaks:
* Optimisations to A_VultureBlast, which was used as a base for the particle creation.
* Make the Metal Sonic boss use P_PlayerCanDamage instead of a custom, somewhat broken player damage detection mechanism.
* P_SpawnGhostMobj takes colorized into account.
* Fold Tails propeller damage into P_PlayerCanDamage.
* When performing an Attraction Blast, place the player in roll frames.
* Update all conditions preventing SH_PINK to incorporate thokitem and spinitem as well.
* Buff MT_LHRT travel distance at slow speeds.
* Smoothen Pity Shield animation to go with sphere's updates to Nev3r's sprites.
* Added LHRT object, designed to be summoned with CA2_MELEE.
* Gives a pink Pity Shield (SH_PINK) on same-team player contact.
* Deals damage to non-player enemies.
* Harmlessly fades into nothing when touching an enemy player, players with SH_PINK already, and players capable of applying SH_PINK to others (through non-Lua methods).
* Basically, you-know-who is the Healer of the party whenever they're around. Fun consequences for the Co-op and CTF metas.
Also, the start of my improvements to CA2_MELEE. Users of that abiliy can only damage enemies/monitors if they touch the front of the player object, but to make up for it, the player is no longer forced away from the direction of the screen at bigger movement speeds.
* Takes function(player, mo) input.
* Return TRUE for stating that yes, the player is in a state that can cause contact damage, do with that what you will.
* Return FALSE for stating that no, the player is weak and vulnerable and cannot cause contact damage, do with that what you will.
* Return NIL for allowing the function to continue regular operation.
Fills a different ideological niche than ShouldDamage - that's for determining whether damage dished between two objects should happen, this is for determining which way around damage should be dished when considering a player-object interaction.
Or, in other words, think of it as "ShouldDamage is whether damage that has been requested should be granted, for object-object interaction, while PlayerCanDamage is for whether global player properties should cause damage to enemies and monitors in the first place, like spinning, hammering or stomping."
Mobjs got their own thinker list after all, and disappearing thinkers are automatically purged from their lists and sent to the limbo list.
So it's safe to assume all thinkers inside the mobj list must be mobjs.
Signed-off-by: Nev3r <apophycens@gmail.com>
Set up a main thinker list and a polyobject mover list to test things up. Works so far, networking as well.
Signed-off-by: Nev3r <apophycens@gmail.com>