* Fix an inconsistency in timing re a time over that involves a single person (the number of tics exiting usually takes), versus a time over that involves multiple people (8*TICRATE).
* Barebones preparatory work for F-Zero explosion, since I was futzing around in this already.
* Fix minor additional error in tab rankings.
* Remove FREE PLAY from intermission drawer, per Sal's request.
* Remove "second%s" from the end of the "Start in %d"/"Vote ends in %d" string.
* Rename cv_advancemap's "Off" value to "Same", to make the behaviour clearer.
* Make the "Start in %d" string now begin with cv_advancemap's string (ie, "Vote in %d", "Same in %d", "Random in %d, Next in %d"...
* Place FREE PLAY in a less contentous location.
* Fix comeback timer being incorrectly offset from the center of the screen.
* Prevent vote drawer from nuking itself (visual-wise) at the start of the level fade following it.
* "kartvoices" cvar. Possible values "Never", "Tasteful" (default), and "Meme".
* Added a way to move quickly through the credits, rather than skip them entirely (hold spacebar or down arrow).
* Fix a few mistakes in M_ChangeCvar, some of which I introduced and some of which were weird in the first place.
* Tweak the offset of the arrows that let you know you can modify a cvar by pressing left or right (some via a patch.kart change, but others via tweaking the drawing location).
- Turning dust is spawned in the correct position
- Turning dust sprites are flipped
- Shadows display on the ceiling for flipped objects
- Drift sparks display in the correct position for flipped players
Will continue with item fixes tomorrow
These are both huge boons for gamepad functionality. If we can add a way to add a menu key, then all of the controller requirements for v1 will be covered.
- A new variable, voteclient.loaded, for keeping track of whenever or not voting data has been set up or not. Gets set to true in Y_StartVote, false in Y_UnloadVoteData. This is used to prevent drawing the screen in cases where it would crash, and preventing duplicate Y_EndVote calls.
- The game checks for all spectator when transitioning to vote, to decide whenever or not it should skip it entirely or not.
- Unrelated: made the roulette cheating much more common. Hopefully it's as cheaty as Mario Party now :p
- Banana drag timer resets when placing one, for x3 & x10 bananas
- Banana dragging spawns transulcent dust
- Dragging bananas make them twitch up & down
- Ballhog has explosion + sound on death
- Ballhog shrinks to nothing if it didn't hit anything
- Replaced a Mario sound on Orbinaut
- Fixed Jawz's sound effect
- Fixed Mines not being removed on death pits
"It is only the *results* that remain in this world! All the *actions* you take in a world where time is erased are meaningless!" - Diavolo, Chapter 520
* Decreasing number of writes - now the unchanging gametype is only written once, and both gametypes are written as UINT8s instead of UINT16s.
* Increasing size of buffer to match new threshold.
* Force map hell if there are two or more non-spectators (ie, same condition as to not be in FREE PLAY) and everyone has selected the RANDOM level slot.
* Unique gasp-and-Shulk-based sounds for both forced and non-forced map hell occourances.
* Activates when there are less than two non-spectators in a netgame.
* Shows flashing text at the bottom of the screen.
* Prevents drawing several UI elements that only make sense with multiple players.
* Prevents matchesplayed being increased.
* Improve the mapreset timer's behaviour.
* Now you get to see the HERE COMES A NEW CHALLENGER screen as the starting frame of the relevant map transition, since it happens on mapreset being 1 rather than 0.
* Make a bunch of normal gameplay stuff that might've activated unnecessarily during mapreset now not able to.
* Hide some other stuff that might've been visible for no good reason.
* Improve Mirror mode.
* First person now works with it!
* Tweaked the minimap player heads. Although the main section of the automap is mirrored, it feels... wrong to mirror the player head? IDK, you may wish to revert this, but given that everything else is the right way around except for the level itself...* Disable the titlescreen demos, at least until we actually gear up for release and make real ones.
* Disable the titlescreen demos, at least until we actually gear up for release and make real ones.
* Stop respawning spectators when their PF_WANTSTOJOIN request hasn't been processed yet.
* Handle PF_WANTSTOJOIN requests in GS_WAITINGPLAYERS.
* Refactor K_CheckSpectateStatus, and make it so PF_WANTSTOJOIN requests are processed if there's only one player in the server, even if they're on lap 2 or up.
* Make the player entry mechanism in P_SpawnPlayer use the PF_WANTSTOJOIN mechanism so that it can also take advantage of the level refresh mechanism with no extra code.
* NOTE: This does a bad hack in order to not send multiple mapchanges while the joining timer is low! If you can think of a better way to do this, please let me know/commit it.
* Change the timer until you can hit ITEM again when a spectator who has to wait to join shorter.
* (controversial, but I think necessary) - flash the ITEM text when the above-mentioned timer is nonzero.
- New player flag, PF_WANTSTOJOIN, added for setting up a spectator queue. You are allowed to join as long as no one has started lap 2.
- Map resets when two people have entered the game, so matches can start naturally without the need of an admin.
- Getting wipeout bumped into offroad slows you down
- Orbinaut & Jawz are relative to your weight (Jawz is heavier), via new function K_GetMobjWeight
- Reorangized where K_KartBouncing is called so that wipeout changes don't affect Eggman Items
- You can bump other people during spinout.
- Bumping during spinout activates a "slow down" timer, which increases your friction after a few tics.
- You have a Smash-style dust effect after a spinout bump, indicating clearly if you'll slow down or not.
* Make it two seconds exactly, instead of two and change.
* Draw it in battle too!
* While testing the above, I discovered 3p's karma comeback timer drawing was slightly broken. Fixed that too.
* d_main.c - fix the wipedef for skipping to the titlescreen to be the checkered one again.
* k_kart.c - Tweak drawtime's setting slightly.
* y_inter.c - Make endtic ALWAYS set when not netgame/splitscreen, to prevent an undesirable, possible hang whenever we add more stuff later.
* Combine three basically-identical functions into a generic framework function that takes a function pointer for the purposes of comparison!
* Y_CalculateMatchData handles the (re)calculation of data.match whenever necessary.
* Y_CompareRace handles time comparisons for Race.
* Y_CompareBattle handles score comparisons for Battle.
* Y_CompareRank handles rank comparisons for both gametypes.
* Move the recalculation for the rankingsmode to a different, non-drawing function.
* Re-organise Y_Ticker for sanity purposes.
* Tweak the countdown timer on both intermission and vote screens.
* Per Sal's request, remove all commented out code that was just inhereted from vanilla (or is unlikely to ever be re-enabled again if it was written for Kart) in y_inter.c.
What the heck does THAT supposed to mean, I hear you ask? Well...
- Mashing for items' effect on chances is now relative to how fast you pressed it! I'll give a more detailed explanation in #main_kart_dev.
- Instead of coding the Auto Frantic Items setting like I said I would, I did the same effect in a completely different way! Odds will automatically get better depending on how many players below 5 there are.
Instead of comparing k_growshrinktimer in awkward ways, just make sure the squishing player's scale is high enough above the victim's scale. This way, we can allow shrunk players to bump other shrunk players, and grown players to bump other grown players.
- Further divide the 2 screens' functionality; the first screen is purely for match results, the second screen is purely for rank results. (only time/score is on the first page, only rank and rank increase is on the second page, instead of time/score and rank increase being on the first page, then rank increase carries over to the rank page...)
- The page switch now happens at exactly the halfway point of the intermission timer
- It now uses a cool picture of the view buffer, like SRB2 SP, except faded, instead of the previous intermission tile.
- Fixed an issue with the previous commit.
* Made Got_Teamchange's level-based stuff only happen in GS_LEVEL.
* If, by chance, DoTimeOver gets called on a player without an object, it won't crash either.
* Make ending music play when you get time overed.
* Make changing-to-spectators get removed from the intermission drawer.
* Fix both cv_timelimit and cv_pointlimit as "hidden options" for people to play with if they know about them via the console.
* Show GAME SPEED on the tab screen.
* Fix Invincibility and Grow's music changes being broken. (I didn't test them properly when making them P_RestoreMusic calls, sorry.)
* Stop showing the First Person Kart view in spectator mode, per Sal's request.
* Have the entire thing slide the fuck away a short while into the intermission.
* The tab screen is modified to work off similar behaviour and presentation.
* To go with it, a revamp of how Battle's scoring is handled.
* It's now considered "hits", and is stored in a reuse in one of the vanilla NiGHTS variables, allowing it to use exactly the same ranking mechanisms as race.
* No more resetting of score between battle rounds.
* Minor, unrelated general code cleanup in places.
* Disable the YEEEAH in splitscreen, otherwise you'll hear it *all the time*.
* Time overs now supported, see below.
* Ties now supported!
* Code cleaned up.
* Play more sonicy tally sounds when counting your points.
* A bunch of time over related stuff!
* Exitlevel time overs everyone, which means no points for you.
* F-Zero-sorta-maybe style death if you're the last person on the course (and not the ONLY one) when someone crosses the finish line! (Or switches to spectator.)
* A bunch of music related stuff!
* Functionally reverted many of my changes to splitscreen and ending music, although the major changes to simplify music code are still kept.
* P_EndingMusic is genericised across gametypes, and only switches a single letter (and looping-ness) now!
* Fix exitlevel in race causing whatever you're listening to to keep playing.
* Make powerups call P_RestoreMusic.
* Put a call to P_EndingMusic into P_RestoreMusic.
* Unrelated crap.
* Make all palette swaps happen at the black point of fades, so they don't stick around awkwardly.
* Huh, I thought I did more than that. Oh well!
* Deaths in record attack no longer put you into a glitchy singleplayer game-over state that we somehow both kept around and also broke since we branched Kart off of Vanilla..
* Fix non-standard mapscales making the Death Egg respawn octagons dissasemble themselves.
* Allow for MULTIPLE TIME EMBLEMS PER MAP, at least in the emblem UI on the timer. It shows all completed emblems plus the uncompleted emblem up to a total of three.
* Major tweaks to the First Person HUD.
* I know this was your baby, Sal, and some of the changes may prove controversial - so I've put the ones that are likely to cause the most fuss inside an ifndef block, so that you can toggle it as you please with minimal code changes.
* Dontdraw-ness, transparency, and colorization match the player's object!
* Moves around on the screen with respect to the direction of the player object's motion, to make drifting look nicer!
* Flashes the colour of your drift sparks.
* Did a WHOLE bunch of things with respect to music. I'm not sure how to describe this, so I'll go through step-by-step.
* Countdowns now play the drowning music again.
* Removed/disabled extraenous P_RestoreMusics.
* Made map-ending music called by its own function, P_EndingMusic(player_t *player).
* Made the ending music play on the LAST player crossing the finishing line in splitscreen, rather than first.
* Make dead players spinout and clip through the floor, at least until we add the new death anims.
* Fix prior pogo spring usage making dead players fall faster.
* Make the time over countdown use the kart font when not splitscreen with 3 or 4 players.
* Removed a weird bonus HWR_DrawCroppedPatch function signature in the hardware header.
* Record Attack Input display!
* Show Record Attack emblem and emblem time on the HUD! Changes colours with the player, just like vanilla internal's.
* Remove the ugly dark blue box on the singleplayer (including pause screen) whose only purpose in Kart was to contain the Record Attack emblem info!
* Unrelated shit!
* Improve loading Kart HUD graphics.
* Fix mirrored HUD graphics being one screen pixel (not basevid pixel) offset.
- Spring panels have a higher minimum forward speed, and you can no longer drop below that speed.
- New, separate type of spring panel that has a maximum speed cap, for small jumps.
- Unrelated: The SMK Donut Plains bushes now have much less thinker overhead.
- Unrelated: Fixed my earlier attempt at getting momentum redirect to work when you just hit the ground.
- Don't decrease spinout when boosting
- Don't increase banana dragging when in the air or if you're not moving (Not sure about this one, just thought that this would feel better than it always increasing once we add the visual effect)
- Play a sound for banana dragging
- Correct finish line sounds
* Remove FUNCMATH from all void-returning functions, given GCC80 specifically complains about this case.
* Extend the length of all extant buffers to the safety threshold recommended by the compiler.
* Add void casts to WS_getaddrinfo's setting to prevent complaints about incompatible typecasts.
* Extend the charsel, face, and superface buffer sizes and writes to include the null terminator. (I didn't really want to do this because it's not even particularily NEEDED, but there was literally zero way to get around the request that I could find with multiple online searches. I tried.)
Updated my compile setup to GCC 6.3, makes it as far as m_misc.c now with ERRORMODE and DEBUGMODE, stops at some gettext related stuff I don't know how to fix now
* Make MT_GHOST's dispoffset -1, so that at the starting line in record attack your player is always visible even when you have multiple ghosts in play.
It's cut down already outside of levels, needed to stop Lua sending mobj references during intermission though.
This is needed because in the past there was a separate way to send player information to joiners that has since been removed. Meaning player information is always desynched for joiners during anything but levels.
- Smoothed out Ruby & Sepia
- Made Sapphire more distinct from Blue
- Made Navy more distinct from Jet
- MD2 colors weight a few colors even more heavily
- Revised ColorOpposite table
- Fix Wanted not updating on hit
- Very minor item odds adjustment for Battle
* Fixed the issue where your runs would be saved as belonging to the wrong character.
* Make the Ghost menu always visible. This isn't PERFECT, but it's better than hiding the option to toggle ghosts just because you're doing your first run as a new character.
* Fix the number of laps carrying over from MP(!!!!!!!!! plugged a huge security hole for the authenticity of replays...)
Other stuff!
* Hide map hell maps in the statistics.
* Clean up some nonet stuff in the menu.
* Put player setup last again, and tweaked its wording.
* Disable the special Kart waiting for players behaviour when not playing a netgame - seeing a double gamestate transition in record attack is weird.