Skip to content

Conversation

@Zanieon
Copy link
Contributor

@Zanieon Zanieon commented Dec 11, 2025

This rewrite adds more flexibility support for gamemodes to change more behavior in regards to how matches can play, and also tries to make things a bit more straightforward.

  1. SetRespawnsEnabled is entirely removed in favor of using its behavior entirely in Riff_ForceSetEliminationMode
  2. SetKillcamsEnabled is entirely removed in favor of SetServerVar( "replayDisabled", bool ) which always existed but we never used
  3. Adds functionality to level.endOfRoundPlayerState variable since we never had support for that, and vanilla does have gamemodes that behaves differently for when it ends
  4. This rewrite finally put an usage into the winning reason message that always comes when the game shows WIN or DEFEAT
  5. SetShouldSpectateInPickLoadoutScreen and SpectatePlayerDuringPickLoadout are part of added API to prevent people getting killed while in the Titan Loadout Selection screen midgame, since making them invulnerable causes frustration for others trying to kill them and think of hacking or lagging
  6. Fixes the issue with Last Titan Standing declaring winner only when everyone in a team is killed, when the win condition is actually first team to run out of Titans (Not by misusage of Riff_ForceSetEliminationMode)
  7. Finally fixes the oddity with weapons still remaining in the ground after a round end
  8. Unifies the flow of the initial gamestates from WaitingForPlayers to PickLoadout or Prematch to GamePlaying
  9. Adds support to DisableTimeLimit flag to allow matches run past timelimit if needed
  10. Adds support to AnnounceProgressEnabled flag to disable faction leaders from using their speeches about the current progress of the match
  11. Adds support to AnnounceWinnerEnabled flag to toggle if the WIN or DEFEAT message alongside faction leader speech should be used
  12. Adds functionality to ShouldRunEvac function
  13. Adds functionality to GiveTitanToPlayer function (Mostly used by FD)
  14. Makes server truly wait for all players to connect for at least 30 seconds before forcing match to start
  15. Restores death hints when respawning

@Zanieon Zanieon self-assigned this Dec 11, 2025
@github-actions github-actions bot added the needs testing Changes from the PR still need to be tested label Dec 11, 2025
@github-actions github-actions bot added the needs code review Changes from PR still need to be reviewed in code label Dec 11, 2025
@Zanieon Zanieon moved this to Zanieon Doing in Personal TODOs Dec 11, 2025
@ASpoonPlaysGames
Copy link
Contributor

SetKillcamsEnabled is entirely removed in favor of SetServerVar( "replayDisabled", bool ) which always existed but we never used

I'm fine with this, but perhaps SetKillcamsEnabled should be kept but made into a wrapper around SetServerVar( "replayDisabled", bool )?

@Zanieon
Copy link
Contributor Author

Zanieon commented Dec 11, 2025

I'd be inclined to that if this feature had any extra real use other than just being a configuration setting for gamemodes, like... modders should not be using this thing to dynamically toggle replays for reasons i can't imagine atm.

@ASpoonPlaysGames
Copy link
Contributor

Did you forget to commit spawn.nut? SetRespawnsEnabled is handled in there and on this branch is currently unchanged. RespawnsEnabled is also referenced in _base_gametype_mp.gnut`

@Zanieon
Copy link
Contributor Author

Zanieon commented Dec 13, 2025

Not really because the spawning changes i'll be doing in the other PR that will rewrite _base_gametype_mp.gnut will handle that situation, while doing that legacy support we talked about in Discord.

@ASillyNeko
Copy link
Contributor

There is no switching sides :/

@Zanieon
Copy link
Contributor Author

Zanieon commented Dec 21, 2025

Line 180 and 520 handles the conditions, and i know it works because Comp CTF players plays alot.

@ASillyNeko
Copy link
Contributor

Line 180 and 520 handles the conditions, and i know it works because Comp CTF players plays alot.

It doesn't work in lts

@Zanieon
Copy link
Contributor Author

Zanieon commented Dec 21, 2025

It is an interaction with the Elimination code, i'll take a look into that.

@ASillyNeko
Copy link
Contributor

image

@ASillyNeko
Copy link
Contributor

Half time works.

@ASillyNeko
Copy link
Contributor

ASillyNeko commented Dec 26, 2025

But after the half time round(s) the alive players have god mode and don't respawn.

foreach ( entity player in GetPlayerArray() )
{
ClearPlayerFromReplay( player )
WaitFrame()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Player needs isvalid check.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually i just noticed i did this logic wrong, the WaitFrame is being recalled for every player, delaying the function more than the necessary, when it should be only once.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs code review Changes from PR still need to be reviewed in code needs testing Changes from the PR still need to be tested

Projects

Status: No status
Status: Zanieon Doing

Development

Successfully merging this pull request may close these issues.

3 participants