1.) Instead of prioritizing best angle above all else, it averages both distance and angle to figure out which is the best overall target.
2.) Jawz will completely cut out angles higher than 45 degrees, preventing instances where someone behind you is considered a better target than who you're looking at.
3.) Jawz does the 45 degree angle checking in Race as well, meaning that they will ignore racers that are neck & neck with you, even if they're technically the next place above you, so that Jawz doesn't take a hard left into a wall.
- different min/max on capped spring pads
- turn the normally almost-useless "non-ramp sector" type into "wall sector", which disables both stepup AND stepdown instead of just stepdown
Less grow, less invinc, less ballhog, just a teensy bit less triple orbinaut, and SPB odds no longer scale with lower player counts like other power items do
* V_DrawFixedPatch and ilk:
* Change the offset of V_FLIP so it's not one screen-pixel off where its non-flipped sprite would have started being drawn from.
* Write to x and y as well as desttop so that anti-screen-overflow checks later in the function behave properly with non-green resolutions.
* V_DrawFill:
* Reduce number of operations performed upon `c`.
* V_DrawString and ilk:
* Offset the left and right boundary checks in non-green resolutions such that you can actually draw stuff to the left of basevid screen x coordinate 0.
* Stop orphaning their memory. They ARE PU_LEVEL, so they'll disappear eventually, but, like... it's not good memory management practice to just *orphan* them when you're literally never going to do anything with them ever again. Y'know?
* Make ghosts spawn properly on slopes.
* Fix that thing where ALL transparent FOF planes were continuously fullbright unless encased in a fog which disables sprite fullbrightness, which was long-hated by many people in the community!
* For backwards compatibility, setting flag 1 in that fog field (which is probably the most common "in-the-wild" usage of this feature) will continue to make objects un-fullbright.
* For situations where you desperately want the behaviour to be enabled, you can apply fog flag 2.
* Change the fadestart and fadeend range in which colormaps are generated.
* The problem HERE was that the darkest light level reached by generated colormaps was actually slightly brighter than the darkest level reached by normal colormaps.
* The typo I fixed does have SOME basis in fact - standard colormap lumps are 34 (33 in 0-indexing) long rather than 32 (31), but whoever wrote this didn't realise that the code for generating them didn't do it DooM style, just bright-to-dark with no extras on the end...
* They're clearly not quick enough at the job, since it causes a bunch of silly race conditions.
* Instead, K_UpdateHnextList and K_CleanHnextList are in charge of removing them, which are called in the circumstances itemamount (and itemheld/eggmanheld) is changed.
* Also, tweak a few places so that trailers AND orbiters can use the same system.
Also, some minor thingies.
* Turn all the useless ```if (a) { A } else if (!a) { B }``` bullshit into ```if (a) { A } else { B }``` bullshit.
* Fix up some minor inaccuracies in the playerarrow stuff that doesn't result in creating more sprites.
* The tab and intermissions rankings...
* ...now have parity in behaviour!
* ...now properly handle player counts over 8, and no longer supports player counts over 16!
* The Item Arrow in Battle...
* No longer develops any extremely stupid bugs due to Orbinaut sprites that makes all objects in state S_INVISIBLE develop <!>'s! (Ask me about this if you're curious as to how it affected everything else too.)
While I cannot guarantee the class of glitches that allows for additional items to be thrown/dropped has been completely obliterated, this DOES prevent the class of exploits that allows for "infinite items" (really just negative quantities not completely bounds-checked for).
* Flashing Eggman-hit players.
* Fix typo with Rocket Shoe item bar, and make it extensible for potential future purposes since I was fiddling with it anyways.
* More complete playerarrow visuals for various items.
* Eggman fake (and debug) item get sounds.
* Correct a typo on Sal's part that meant flashingtics would continually grow larger and larger, slowly drifting between different clients.
* A more robust eggmanblame system.
* Correct the thing where it would print "music not found" when digital music is disabled.
* Make the MIDI music rejection text print if MIDI music is found (and digital music is on).
* Steal a point from Ballhog and give to Orbinaut.
* Make it based on the maximum number of bumpers someone has, not the average for everyone.
* Improve the odds a tad if you're Wanted.
* Tweak the score multiplication to give three points for Wanted and two for removing the last bumper (both disabled if you get the hit with a fake item).
* Allow Karma players to drop their Random box.
* These boxes flicker out of existence after 15 seconds.
* Causes a WAIT penalty, too.
* Remove some redundant PF_ATTACKDOWN stuff, given under the conditions the flag would be applied, it has definitely *already* been applied.
This now means:
* Lua strings longer than 1024 chars can now be read properly without awful crashes
* Lua strings with embedded zeros can be written/read without truncating anything (hopefully)
* Make Orbinaut Shields animate at 3 tics per frame, not 1.
* Make dead items flash in and out of visibility.
* Related to above, fix a few circumstances where returning was not properly handled after removing a mobj in mobjthinker.
* 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.