* Make the Amy Cameo only spawn in SP, Record Attack, or Co-op unless it's the Clone Mode.
* Add the diagonal spring flag options Red and Yellow Diagonal Springs have to the Blue Diagonal Spring as well.
* Put diagonal blue spring in config.
* Red and yellow Boost panels!
* Added because SUBARASHII and KIMOKAWAIII had several levels using them, and I wanted to make them look better.
* https://cdn.discordapp.com/attachments/359091121789468672/634486669202161674/srb20015.gif
* Uses the mapthingnums of Glaber's SOC resource boosters, but absolutely nothing else - not even the magnitudes.
* Apply MF_AMBUSH to force the player into a spin - even if they don't have a spin ability!
* Banpyura!
* A Crushstacean with a spring instead of a crushclaw.
* https://cdn.discordapp.com/attachments/428262628893261828/634432099306176512/srb20019.gif
* Wanted this for a while, finally added it.
* Improved springs.
* Add pw_noautobrake to disable autobrake for half a second when touching yellow horizontal springs, and a second when touching red ones, even on the ground.
* Add pw_justsprung to disable directionchar for a few tics while touching any springs with a horizontal component to their velocity.
* Add the diagonal spring flag options Red and Yellow Diagonal Springs have to the Blue Diagonal Spring as well.
* Started but decided against a tip of the hat to the CD spring spin, hidden behind #define SPRINGSPIN.
* Make directionchar "lag behind" a little bit in waterslides.
* Improved flame jets.
* They now use new sprites for having their flames move upwards and sideways, instead of having them always face downwards like in 2.1!
* Fixed a mixed declaration and code error in A_RolloutRock. (Sorry Lach!)
* Make the Amy Cameo only spawn in SP, Record Attack, or Co-op unless it's the Clone Mode.
* Improved ZB config.
* Add above new types.
* Add Blue Diagonal Spring, which existed in the source but not the config.
* Re-order enemies in ZB config by zone (but keep them in the Enemies section only).
If you don't, the reaction was "WHAT?? Why is he here? This is GREAT but, what??" And while the reaction is on the positive end of things, it's stll clearly not advisable for our defining Big Reveal of the already huge update.
To this end: Here is a mini cutscene! https://cdn.discordapp.com/attachments/428262628893261828/626207624043429898/srb20005.gif
* He's digging through Eggman's trash.
* Clearly doesn't expect to see you!
* Ready for a fight all the same.
* You can attack him during the mini cutscene if you're impatient.
* Skipped if you give him MTF_AMBUSH.
* Requires new assets (including map) to test, but I'm not ready to make a MR yet because I have other thoughts first.
Also, since I was poking around in p_enemy.c, I fixed A_Boss1Laser's issues (not working with direct 2.1 port states and having the weird secondary attack).
If this causes more problems than it solves it can be reverted, but doing a bunch of playthroughs of DSZ1/2, GFZ1, and CEZ3 didn't seem to uncover anything, so I'm tentatively putting it in this branch.
* Update the function signature of P_MixUp to accomodate both it and drawangle instead of doing it outside of the function.
* If the player is spawning from the start of the stage and it's from the ceiling, be in fall frames as requested (resolves#191).
* 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.
- Frontside x offset = boss ID (determined via parameter for all bosses)
- Noclimb flag = disable mode
- Bosses don't do a fuckin' THING - no state updates, no player searches, no sounds, no lua, no nothin' - and it's all totally netsynced.
- The only thing they WILL do is flash infinitely if you hurt them, but this is designed for stuff where you're not meant to be in the same room as the boss til it's activated.
- All bosses of all IDs are automatically enabled on mapload, then if an enable mode version of this linedef is present in the map for a specific boss id, that boss id is automatically disabled.
* Add multi-boss support via parameter for:
- All bosses' MT_BOSSFLYPOINT search
- Boss 5's waypoint search
- Oldbrak's waypoint search (this one's for you, jood)
* Fixed an unused variable warning in lua_skinlib.c.
- fixed post-level cutscenes playing when you get game over in MP (still kinda on-topic)
Also with apologies to MI:
- golden egg statue mode for tutorial, since the grey doesn't contrast enough with the blue and lime green
- fixed closed captions for replaced player sounds being incorrect
- fixed closed captions overlapping tutorial text
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.
* Like Kart, remove cv_precipdensity.
* Like Kart, replace "Infinite" draw distance value with "None".
* Better thinker with more return optimisation.
* Better placement of thinking in rendering, to avoid ceiling-mounted sprite glitches.
* 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.
* Port across the additional colour translation maps, including mobj-level support for "colorized" objects.
* Make Fangboss and both Metal Sonic objects greyscale if, on spawn, there is a player in the game who is not a spectator whose skin is that character.
* Allow bosses with MF_GRENADEBOUNCE to opt out of the MF2_FRET colour-flashing tomfoolery, and give this flag to Fang.
* Like Kart, remove cv_precipdensity.
* Like Kart, replace "Infinite" draw distance value with "None".
* Better thinker with more return optimisation.
* Better placement of thinking in rendering, to avoid ceiling-mounted sprite glitches.
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>