* Center level selection.
* Re-work Record Attack screen.
* Re-order MP Main menu, hide in NONET.
* Combined yeeeah on vote screen.
* Colour gametype on tab and tally.
* (unrelated) Don't show "CHECK" if exiting.
* Bar of levels.
* Colourisation!
* New V_SKYMAP, which hasn't been put in dehacked lists but is otherwise valid!
* New single page statistics screen!
* V_DrawFixedPatch now works at the edge of the screen!
Ghost fixes!
* On minimaps!
* Free memory after use!
* Don't spawn in midair on slopes!
* Lots of menu changes!
* Little arrows next to changeable cvars!
* Show default value for sliders!
* Pretty pretty pretty.
* I don't know how to describe some of these changes.
* Effectively nuke MIDI music support!
* Skiddown at the start of a race is more interesting!
* Spinning in waterslides!
* Tiny bugfix in voting, plus a little celebration...
* Improve control menus significantly - a more layout-neutral, gameplay importance based order, with spacing, and less depth to get to the important stuff.
* Port over the improved MP main menu from internal, including flattening the IP connect onto its level.
* Allow for selecting the number of splitscreen players using a menu option, rather than three seperate menu choices.
* Improve the layout of all of the level/gametype select menus slightly.
* (unrelated) Make fourth player area in 3p splitscreen use the tiling background instead of a pure black area.
* (unrelated) Tweak minimap ordering slightly.
* Combine the numlaps and usemapnumlaps functionality on the menu into basenumlaps, which numlaps is set to every race start, except when it's map default value (0) in which case it loads the map's lap count.
* Defer the change until you're actually modifying the map, in service of the following.
* Reset score.
* Call that gametype change function.
* Collary of the above: Don't reset score if you're `map mapxx`ing in the console, unless it's `force`'d.
* Fix the basic, obvious issues that'd prevent us shipping with the new level title system.
* Correct the non-green resolution support, which was ALMOST there but which I accidentially fucked up one of the signs on.
* Adjust the subttl position if it'd get overwritten.
* Draw the gametype with the subttl.
* Adjust the gametype constants for easier gametype_cons_t array access.
* Fix that rat-ass nasty crash with respawning from spectator mode!
* Flying ghost kart for spectator mode! It's silly and fun...
* Allow for .bat files to be .gitignored in the Debug compilation folder too!
* To go with this, have the HUD fade in as the title goes away.
* After complaints, only do dogear gametype indicators on the voting screen for levels which don't match the prevailing gametype, and use thin font to intrude on the level pic less.
* Make the voting screen background a different graphic in battle.
* Improve behaviour of DrawDiag in GL.
* Super important to allow dedicated servers to continue forever without needing to add Terminal.
* To facilitate understanding, add gametype dog-ears to the vote screen!
* To do the above, add V_DrawDiag! Works in GL, too!!
* Unrelated shit!
* Fix a buffer overrun in the randmapbuffer!
* Disable spectating in splitscreen... Not 100% sure, but in 2p battle, if you spectate, you just lose one balloon and respawn...
* Improve all the string drawing functions' behaviour - both with being SLIGHTLY clipped by the edge of the screen, and when confronted with drawing off the base 320*200 internal area
* PRETTY SURE I fixed that bastardacious issue with multiple shield items disappearing at once. Done via introducing lastlook to store the updated count.
* Fix an issue with incorrect scale setting for shield items.
* Clean up a bunch of weird shit with regards to setting of hnext/hprev chains. (Why does the player go on the opposite end to the direction you enter the chain from...)
* Repair hnext chain on mobjremoval as well. May or may not remove the need for overlay/shadow thinkers; too tired/excited to dig into that atm.
- Peelout sound for sneaker boosts
- Flicky grab sound for stealing balloons
- Adaptive sounds for start boosts (drift boost for sub-optimal boosts, sneaker boost for good boosts, super transform sound for the frame perfect boost)
- Orbinaut rollling sound
Karma items can hand out x10 banana, and being ahead in Battle is way more focused on removing just your defensive options than making all of your options Orbinaut/Banana/Eggman (there'll still be a lot of those, but it doesn't lower the chance of the other items too badly).
Also tweaked a weird splitscreen check in HWR_DrawSpriteShadow; still investigating whether stplyr is ever not player 2 when it's player 2's view, but this looks better for now
- SPB multiplier depending on 1st-2nd distance
- Removed the Battle-only k_poweritemtimer (hold over from when you could easily get invuln items all of the time), replaced it with a 2 invincibility item cap in ALL modes.
- Spinout is affected by boosters, *properly*
- Can no longer strafe while spinning out on speed bumps
- Messed with how other items interact with speed bumps, again.
- Old bounce code has been ported for non-players
- Fixed Karma players being able to do anything after the round has ended.
- Fixed sneaker and spinout timer weirdness
- Fixed Mines still being hold-use
- Fixed rubber-burn turn not working
- Removed redundant k_spinout and unused k_boosting variables
- Filled out the Color_Opposite table with Kart's new colors. Not really relevant right now (besides some extra Lua functionality) since nothing uses it, but will be nice for if we do the signpost from the sky idea.
- More Jawz states for later
- Jawz orbit their user in the right direction now.
- Banana trails made closer to each other
- wheels.lua hardcoded
- All held items take a double press, for consistency.
- Fixed Karma Items not being able to be collected by invincibility or hyudoro users
The overlay object now has a hitbox which handles all of the item giving/bombing code, and no longer takes up the player's tracer. This is to give them a bigger hitbox without any bad side-effects of changing the player's hitbox directly (shadow size). Should make bombing more useful, and just sliiiightly less missed high-fives from items.
- Mines last twice as long
- Mines can appear in 1st with a measly 5% chance, for maximum ass-blasting
- Mine shiiiiink sound no longer plays globally
- Thrown Bananas and Eggman Monitors bounce off walls like Mines
- Hyudoro can steal from anyone
- Halved invincibility alarm/music distance
- Getting out Orbinaut/Jawz plays a shield sound
- Using Shrink plays a devastating Chaotix sound
- SPB plays a high-pitched wail when it's locked in
- Hyudoro plays a ghosty sound when used
- Fixed Battle arrow roulette
They can now blow up after they first stick their spikes out in the deploy animation. They also make a spikey sound effect to indicate when they can blow up.
The voting cursor can land early, or go up a position, on vote end. Not only is this hilarious and makes it more unpredicatable, it also makes it easier for the game to pick a vote and move on to the next level .
(I bet people will mistake this for a bug on release :V)
The new distance setting on SPB is directly inbetween the previous "way too rare" setting and the "way too frequent" setting before that. Hopefully they should come up in reasonable intervals now.
It now does its job properly: repairing races when there is one straggler far in the back.
- Wipeout instead of spinout, to prevent cheap deaths
- Lose all of your items when you get shrunk.
- You cannot pick up any items while shrunk.
- x2 duration.
- Appears in the very back, with 10% chance.
- Fix merge issues
- Update invincibility flash to use its own object instead of MT_OVERLAY, so extra hacks don't need baked into overlay thinking
- K_SpawnSparkleTrail can accept mobjs now, since there really wasn't any reason it needed a player.
- Comment out a few old MK/vanilla SRB2 effects for now
Instead of returning at the very start of P_MoveChaseCamera, just set camstill to true, and add another exiting check to momentum. This lets the mirror mode post process effect to continue working.
When using a taunt voice (item usage) there's a 5 second delay on more taunts and a 2 second delay on other voices
When using other voices, there's at least a 2 second delay on all other voices
- 30 sec cooldown on all lightning types
- Delay before Blue Lightning hits, based off of distance
- Blue Lightning can swap targets if 1st place is passed
- Blue Lightning can only be handed out if 2nd is far away enough from first
- cmd->driftturn exists now, for figuring out how far you're turning. Added to prevent analog sticks from being able to get drift sparks faster.
- Feather bounce strafing moved to use cmd->sidemove, which means it also supports analog now.
- Braking now waits a few tics for you to be stopped for a few tics before it lets you go in reverse, as per Sev's request.
- Removed a lot of unused/redundant/commented out control code, and reorganized some of the existing code.
Some people like to lag up the whole server by enabling precip, so y'know what, just turn it off in netgames. Weather can just stay a Record Attack/splitscreen only feature now I guess
Instead of adding to your speed, it relatively multiplies it if you're above your top speed. This is applied to ALL of Kart projectiles as well, not just shells. May we never run into our own shell that we threw on a boost pad ever again.
- mapgotboxes is synched
- Karma bombs/items flash while spinning out
- Karma bombs have a sound + explosion when hitting someone
- Karma bombs can no longer attempt to attack a player that is flashing and have to WAIT... again
- Fixed MT_GREENITEM's bounce sound, after breaking from last commit (WHY ARE YOU ABUSING MARIO MODE SOUNDS, STOP, AGHH)
Move old fix for too large maps having rendering issues from R_CheckBBox to OpenGL's HWR_CheckBBox
From what I know, this effects at least Aerial Garden and Seraphic Skylands
The FixedMul() C implementation would produce off by one results,
causing constant desyncs on 64 bit builds and builds without an
ASM implementation of the function.
This is fixed by shifting instead of dividing, possibly avoiding
rounding errors.
This makes OpenGL stop using a specific function that doesn't really do anything for it anymore. It looks like it was used for a hack that would change the colour of polygons for the flashpal equivalent in DOOM.
I made it so ST_DoPaletteStuff doesn't set the flashpal in OpenGL as it already does its own hacky overlay and doing that would cause all the textures to be flushed more mid-level, it could be enabled for more correct flashpals, but they still wouldn't effect fog or lighting.
This means the palette will be set when going to the title screen, and twice when starting a map, (causing the OpenGL cached textures to also be flushed at those times)
Also move the Bouncy FOF sector special check above the FOF heights checking in P_CheckBouncySectors, because it means not having to waste time calculating FOF heights only for it not to be bouncy anyway :P
This means that, if the three paths are not the same, you should be able to tell if at least one of them has a file that just had a bad MD5. Most relevant for Linux peeps I expect.
Note: Untested as of writing
Set up similar to NiGHTS Mare linedef executors. Give a sector the "Race
Lap" sector type, tag it, then set the frontside x-offset on the trigger
line to the lap it should activate on minus 1. There are a few flags you
can check on the trigger line to modify its behavior.
- Normally the executor will only trigger if its exactly on the lap
specified. Check Not Climbable to make it execute on laps equal to or
greater than, or check Block Enemies to make it execute on laps equal to
or less than.
- By default, the executor will check current lap with the person in
last's lap. Check E4 to instead find the current lap from the player who
triggered it. This flag is better for triggering events ahead of the
players, while the default effect is better for triggering events behind
the players.
I don't fully understand this, but it's what software does and it fixes the issue of the lighting in DSZ3. Also don't need the extra call to R_Prep3DFloors.
There's no way atm to make you flash on your screen but not on everyone else's, so I think just making you invisible on all of them keeps the original SMK intent of "you have to pay extra close attention to their screen to know where they are at all" better
- Fixed a simple oversight that prevented P3 and P4's sounds from ever
playing
- Changed how sound priority works, now compares distances between
(Untested as of commit since my computer wants a quick restart before it
compiles :V)
I don't think it does anything for us anymore, and might even break things with slopes.
Someone let me know if I'm wrong and am breaking things horribly here.
Transformation based on screen space would make sense if we didn't want anything in the world to effect the sprites.
This should allow sprite splitting and sorting of sprites with level geometry easier.
stransform is no longer needed.
Solid walls *can* be cut
Fix issues with water and fog FOFs not cutting each other out correctly
Fix Fog colourmap and lighting setting that is done here.
Remove HWR_SplitFog
There is currently a bug with FF_DOUBLESHADOW (that also exists in software) but has a larger impact here. When 2 FF_DOUBLESHADOW lights are directly stacked on each other the bottom one has its height set incorrectly. This causes all the Fog in the timed gravity flipping section of ERZ2 to be drawn and it looks really bad.
This reverts commit 121fcd8369.
The reason I am reverting this is because the last commit actually fixes the *old* screenshot functionality, as the screen is being drawn back onto the buffer after they're swapped in the "real" size. Meaning the old function actually works perfectly fine now.
They still aren't perfect, but now they are at least not quite so obviously just translucent polygons over the level. A mixture between partially modulating the background colours and adding the fog colour. Notably white fog blocks look like they're brightening what's behind them.
Additive was also setting noalphatest before, can probably decide that depending on what it needs anyway. I don't think it's currently used anyway.
Use reactiontime instead of health so chain reactions can occur when multiple bombs are layered.
Make the check for nearby players happen BEFORE the spawning of explosion objects.
Remove MF_NOCLIPTHING and MF_MISSILE from bombs so they don't try and die when they hit the floor sometimes.
Removed Magnet item box pulling code. It's a mess, hacky, doesn't really help in races, and breaks things. We will implement something new for it soon.
Sorts all translucent sprites and MD2s so they're drawn after all the opaque ones. Fixes most of the observable issues between translucent MD2s and opaque sprites/MD2s.
Only use glCopyTexImage2D when first creating the screen texture, use glCopyTexSubImage2D anytime after that as it does not define a new texture each time.
Flushing of the screen textures has been implemented for when the screen size changes (so that the screen textures don't stay at a wrong size) and the game is closed, I believe they would leave a memory leak before.
The Far clipping plane did not need to be nearly as high as it was, the new value is 32768, which I suspect is about how far software can render before it completely falls apart.
It is desirable to increase the near clipping plane to between 6-10, but it can introduce more issues with close geometry not being drawn when the player or camera is scaled or viewheight is set to MIN in first person view. It would also stop sprites from being drawn ever so slightly too early, but this isn't too much of an issue and isn't too noticeable with those values. Might look into scaling near clipping plane in accordance to camera scale in the future.
The reason for wanting to increase the near clipping plane is because the small value can cause very noticeable Z-fighting where there shouldn't be on older GPU's, usually Intel ones, that don't support 24-bits for the depth buffer.
* fix screen to properly truncate the filename to just the real name only
* if the real name itself is too long, use ellipsis and paste in parts of the start and end of the actual name
note: I haven't actually tested if this works or compiles yet, I haven't the time right now
Should make it a lot easier to add more gametypes later.
Also some minor fixes:
- Changed up how shell speed scales in mobjscale juuuust slightly, so
it's less messy
- Fixed CHECK showing spectators
- Flame trails don't spawn if you're not on the ground
- Mobjscale: Shells are now the correct speed
- Mobjscale: Explosion's wipeout hit height scales
- Secrets renamed to Extras
- Extras leads to the checklist instead of another menu
- Credits & Sound Test are on the Options menu now
- New title screen cheat for unlocking everything ("banana", or "← ↑ → →
↑ ← ↓ → Enter")
I don't know exactly what it did previously since I never actually
observed what happens, but now in dedicated servers it will wait for
time to run out, then if there's no votes by that time it will just go
onto nextlevel
Turns out compiling for Linux 32-bit using the Makefiles never actually defines LINUX! Apart from that, most of the existing Linux-specific code in SRB2's source code (except for tmap.s) actually uses __linux__ instead anyway
Anyone in the top 50% gets winning music & blue position, everyone below
gets the losing music & red position. For odd numbers, it rounds up.
2p: 1st wins, 2nd loses
3p: 1-2 win, 3rd loses
4p: 1-2 win, 3-4 lose
5p: 1-3 win, 4-5 lose
6p: 1-3 win, 4-6 lose
7p: 1-4 win, 5-7 lose
8p: 1-4 win, 5-8 lose (SMK)
12p: 1-6 win, 7-12 lose (modern MK)
16p: 1-8 win, 9-16 lose (max player count)
In big netgames you won't just hear the losing music all of the time now
:V