Commit graph

440 commits

Author SHA1 Message Date
TehRealSalt
1a698f65bb < 2018-10-17 13:38:31 -04:00
TehRealSalt
93f5c5c1f0 Prevent point grief
(Needs tested)
2018-10-16 20:56:04 -04:00
Monster Iestyn
85b18c963f Removed all code in Y_FollowIntermission that's already handled in G_AfterIntermission
Only real difference here is that CEcho messages will always be cleared when going to credits/evaluation, but that's hardly a loss tbh.
2018-10-11 21:25:15 +01:00
Monster Iestyn
3c981c913a Moved Y_EndGame from y_inter.c/h to g_game.c/h, renamed it to G_EndGame 2018-10-11 21:24:53 +01:00
Sal
85430da37f Merge branch 'thinkerclean' into 'master'
Nuke a bunch of iteration things that have no purpose in SRB2Kart.

See merge request KartKrew/Kart!25
2018-10-07 23:14:53 -04:00
toaster
5e8799a965 Nuke a bunch of iteration things that have no purpose in SRB2Kart. A full explanation of my reasoning and what it affects is as follows.
p_inter.c -
	Everything to do with setting states for starposts
		In SRB2Kart, starposts are invisble. We don't need to loop through all thinkers just to set their states when there's no visible effect of the state-setting. In addition, it has no consequences for gameplay - starposts have long been silent here, and all checking is done regarding their health, not their state.
	Remove extremely low-traffic conditionals (MT_FLINGEMERALD collision height extension, for example)
		These objects serve no functional purpose during regular SRB2Kart gameplay. Why should every other object have to pay an admittedly minor performance hit just for them?
	Disable all mechanisms of damaging bosses or enemies with the player's physical contact
		With the exception of Sapphire Coast, no MF_ENEMY objects exist in the entirety of the standard roster. In addition, the conditions for damaging the enemies were impossible to achieve, because they required vanilla SRB2 mechanics such as "jumping", "spindashing", or "super". Therefore, they can be safely commented out.
	Disable NiGHTS-related material (excepting bumper, hoop, and wing-emblem objects)
		NiGHTS is fundamentally incompatible with regular kart gameplay and I believe was already broken. Therefore, any mechanism which enters, aids, or abets it can be safely disabled.
	Comment out Tag mechanisms
		Tag is the only vanilla multiplayer gametype which has sufficient gameplay depth and complexity (HEYOOOOOOOOO) to require dedicated thinking in and of itself in order to manage. This thinking is irrelevant to Kart's functioning, and can be neutered easily.
d_clisrv.c
	Comment out Tag mechanisms
		See p_inter.c
d_netcmd.c
	Disable several devmode commands which are irrelevant to SRB2Kart gameplay
		When investigating for references to NiGHTS material, I discovered that these remained untouched. In order to present a more coherent game, I have hidden the ones that serve no purpose for us.
	Comment out Tag mechanisms
		See p_inter.c
g_game.c
	Disable NiGHTS-related material
		See p_inter.c
	Disable some team-related material
		Teams are not present in SRB2Kart at present. Obviously we'd want to reconsider for future, but it doesn't need to be run right now.
	Everything to do with setting states for starposts
		See p_inter.c
m_cheat.c
	Disable several devmode commands which are irrelevant to SRB2Kart gameplay
		See d_netcmd.c
p_map.c
	Remove extremely low-traffic conditionals (MT_EGGSHIELD collision, for example)
		See p_inter.c
	Disable NiGHTS-related material
		See p_inter.c
p_mobj.c
	Disable P_EmeraldManager
		Power stones, despite their relevance in vanilla Match, are not in SRB2Kart's Battle. No management of nonexistent emeralds is required.
p_setup.c
	Everything to do with setting states for starposts
		See p_inter.c
p_spec.c
	Disable NiGHTS-related material
		See p_inter.c
	Everything to do with setting states for starposts
		See p_inter.c
p_telept.c
	Everything to do with setting states for starposts
		See p_inter.c
p_tick.c
	Disable some team-related material
		See g_game.c
	Disable P_EmeraldManager
		See p_mobj.c
	Do not run shields
		Shield objects are not run under the vanilla system; the Thunder Shield is a domain-specific recreation using a standard mobjthinker.
	Do not run special stages
		SRB2Kart does not have special stages.
	Comment out Tag mechanisms
		See p_inter.c
y_inter.c
	Disable some team-related material
		See g_game.c
p_user.c
	Disable NiGHTS-related material
		See p_inter.c
	Disable 2d movement for players
		2D mode? In a kart racer? :nick:
2018-10-03 17:04:41 +01:00
toaster
98768ac236 Fix incorrect alignment of selected-level Ruby in vote drawer. 2018-10-02 16:51:17 +01:00
toaster
9ab42d91cb Merge branch 'master' of https://git.magicalgirl.moe/KartKrew/Kart.git into encore
# Conflicts:
#	src/info.c
#	src/m_menu.c
#	src/y_inter.c
2018-09-21 20:54:38 +01:00
Digiku
a5a8282a77 Merge branch 'nights-score-lap' into 'master'
NiGHTS: Intermission Bonuses

See merge request STJr/SRB2Internal!159
2018-09-19 11:03:14 -04:00
Digiku
96f61d8ae6 Nights intermission bonus y_inter.c: A comment 2018-09-19 10:53:11 -04:00
toaster
8df3e2ffbe Do a bunch of major modifications to the voting system's rule change system!
* Add `kartvoterulechanges`, or "Voting Rule Changes" on the menu, to allow some user control over event frequency.
	* "Never" - does what it says on the tin.
	* "Sometimes" - 1/8 chance of Encore if host has unlocked it, only gametype change when buffer is full
	* "Frequent" - 1/2 chance of Encore if host has unlocked it, gametype change every 5 maps
	* "Always" - If host has unlocked Encore, alternates between Encore and Gametype. Otherwise, always a gametype change
	* There's probably room for a setting between "Sometimes" and "Frequent", but I didn't want to overload the host with options and these were the ones that made sense.
* Better handling of buffer refreshes, to prevent two of the same map appearing next to each other in the voting unless there literally aren't that many maps.
* Mostly unrelated: Minor bugfix for Y_SetupVoteFinish, preventing music changes/random sounds playing on the You Will Join Next Race screen. (Branch-appropriate, at least.)
2018-09-11 15:42:53 +01:00
mazmazz
a177548da6 Added NIGHTSLINK bonus type for the 2.1 Link Bonus 2018-09-09 01:13:02 -04:00
TehRealSalt
e4a4ef83c1 Vote screen uses the font's intended character spacing 2018-09-02 22:53:40 -04:00
toaster
7e68741a42 Improve intermission drawer further.
* Change `MM:SS.MS` to `MM'SS"MS' to match all other recorded instances of time in-game.
* Add a full stop to NO CONTEST to scrounge up an extra four pixels to match the increased width of above.
* Make it such that the number of players per column will never be desynced with future code changes by tying it to a local #define.
* Other minor code improvements.
2018-08-31 12:37:15 +01:00
Monster Iestyn
3c65251bb6 Merge branch 'master' into hud-cleaning
# Conflicts:
#	src/y_inter.c
2018-08-29 16:39:02 +01:00
toaster
dec11f37ff Increase the amount of time between the switch to the Rankings half of intermission and ranking is calculated a tad.
Turns out it wasn't taking the length of the level-to-rankings switch animation into account!
2018-08-26 17:31:04 +01:00
toaster
98ccb96938 Real time reordering of intermission rankings as rank counts up!
Also features jittering of the intermission elements because I thought it'd be fun, plus some better handling of players leaving (and then new ones joining) mid-intermission.
2018-08-26 16:23:50 +01:00
TehRealSalt
b7caeccda9 Merge branch 'sonicitems' into encore 2018-08-26 00:12:02 -04:00
toaster
75e8f19f71 Fix up the bugs from last night's hell netgame.
* 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.)
2018-08-24 13:36:03 +01:00
Monster Iestyn
dc6b52a449 Add INFLIVES macro, to make it easier to find infinite lives-related code 2018-08-23 20:09:39 +01:00
toaster
bb3bb48fe6 * Disable inverting on encore level select pictures at unanimous request of last night's netgame.
* Also, correct their alignment in y_inter.c.
2018-08-14 15:32:17 +01:00
mazmazz
a2883009ed Preproc comment out Y_SetLinkBonus because unused 2018-08-14 10:20:56 -04:00
mazmazz
53303174c1 MaxBonusLives level header option for # of lives in score tally 2018-08-13 14:17:38 -04:00
mazmazz
42da933c2c Merge from nights-score and use Lap Bonus instead of Link Bonus
* One BONUSTYPE = NIGHTS option instead of several
* Use NiGHTS Bonus for special stages, not Link Bonus
2018-08-12 20:56:57 -04:00
mazmazz
83d3099fe3 Change special stage bonus to NiGHTS in-level score, per MB 2018-08-12 20:36:53 -04:00
mazmazz
8ec0865170 Have just one NiGHTS bonus option: NIGHTS and LINK together 2018-08-12 20:25:35 -04:00
mazmazz
b9b2f7cfa7 Make lap bonus more valuable 2018-08-12 20:08:40 -04:00
mazmazz
d83b96c126 NiGHTS lap score bonus 2018-08-12 19:48:45 -04:00
mazmazz
8d40d8ea43 BONUSTYPE typo; bonus alignment 2018-08-12 19:32:11 -04:00
mazmazz
c51e84fdfe NiGHTS bonus implementation 2018-08-12 19:25:21 -04:00
toaster
66092d76e7 Bugfix for "Blue Mountain 0", "Green Hills K".
Also, minor tweak.
2018-08-12 15:10:47 +01:00
toaster
e8c436ab76 * Encore on the voting screen! Appears randomly once unlocked in the same slot as that which sometimes represents a gametype change (odds inflated for testing purposes).
* A better representation of an Encore level, now with inverted graphics (a special remapping we can now use elsewhere whenever if we want!) and a floating Ruby!
* Decouple encore's setting from cv_kartencore on mapload. Instead, bake it into D_MapChange and related, which will only some of the time be fed by cv_kartencore's value.
* Encore mode now has a special mapheader palette setting, "encorepal", rather than using the same one as non-encore.
2018-08-11 22:23:40 +01:00
Monster Iestyn
3e80f4a59b Merge branch 'master' into leveltitle-tinkering
# Conflicts:
#	src/hu_stuff.h
2018-08-10 20:03:59 +01:00
toaster
670ad8cbd1 Merge branch 'sonicitems' into encore
# Conflicts:
#	src/st_stuff.c
2018-08-10 15:35:00 +01:00
toaster
471796d8a3 Fix all actionable comments in my review of sonicitems. 2018-08-09 22:59:52 +01:00
toaster
1348fa90ad Merge branch 'sonicitems' of https://git.magicalgirl.moe/KartKrew/Kart.git into encore 2018-08-07 17:09:25 +01:00
toaster
65a32adaf4 Improve y_inter.c levelname setting. 2018-08-05 16:35:33 +01:00
toaster
0aba310643 More UI crap!
* 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"...
2018-07-30 23:17:14 +01:00
toaster
bc9da8ee31 Some UI stuff.
* 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.
2018-07-30 21:53:54 +01:00
toaster
1065b6db41 Buggy netgame! Sorry yalls.
* Fix free play on intermission.
* Fix crash in killing/damaging mobj with null death/pain state.
2018-07-29 23:07:10 +01:00
toaster
1ec8a6bc2a Change brightness of buffer fade in intermission (Oni-approved). 2018-07-29 01:04:43 +01:00
TehRealSalt
d63da9acf1 A lot more safety checks on the voting screen for spectators
- 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
2018-07-27 21:59:00 -04:00
toaster
d582a9dd97 Encore mode - a fresh take on mirror mode!
* Palette remaps.
* Branding.

TODO:
* Doesn't work in GL. (Mostly.) I have SOME ideas on how to tackle this, but...
* Transmaps are broken in Encore for some reason.
* I tried to make in-level colormaps shimmy over, but it didn't quite work, so I commented it out and only semi-fixed it.
2018-07-23 23:50:41 +01:00
toaster
834c5718a6 MAP HELL IS REAL
* 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.
2018-07-22 21:02:31 +01:00
toaster
c072dea796 Force the display of FREE PLAY on the pre-rankingsmode part of the intermission screen, since it's important to show what it was. When in rankingsmode, THAT'S when it's able to freely change with the number of players jumping in and out. 2018-07-22 17:39:09 +01:00
toaster
995c137e14 * FREE PLAY! The necessary corollary to HERE COMES A NEW CHALLENGER...
* 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.
2018-07-22 16:16:03 +01:00
toaster
215e4039e4 Don't show (+ 0) for players that didn't get any points this round. 2018-07-19 16:28:36 +01:00
toaster
58346ef123 Minor across-board bugfixes re the past 24 hours of commits.
* 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.
2018-07-19 14:59:38 +01:00
toaster
9d4fa29b7d Some more intermission stuff.
* 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.
2018-07-19 14:29:11 +01:00
toaster
38bef90eb0 * Correct a bug with data.match.increase's ordering changing between CalculateTournamentPoints/CalculateMatchWinners and MakeRankingsTable.
* 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.
2018-07-19 13:23:15 +01:00