Skip to content

Conversation

monsonjeremy
Copy link

I used Cursor to do most of the work so I don't know how well it will work to be honest. I'm not an approved developer so i can't test it out, if you want to test it out locally that would be cool.

@Fort-TM
Copy link
Collaborator

Fort-TM commented May 30, 2025

Thank you so much for the PR, I really appreciate it. While I won't be able to fully test it right away due to other projects, I will test it soon and see how well it works and post any issues I find here, if there's any

Thanks again!

Copy link

@MrPh1l MrPh1l left a comment

Choose a reason for hiding this comment

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

I recommend changing those variables which are wrong and will not allow for the plugin to run.

monsonjeremy and others added 2 commits June 3, 2025 09:53
Co-authored-by: Philippe <phil.hebert14@gmail.com>
Co-authored-by: Philippe <phil.hebert14@gmail.com>
@Fort-TM
Copy link
Collaborator

Fort-TM commented Jun 7, 2025

I just tested the mode in a server. It works as expected, but I had an issue where it changed to a new map with only 2 seconds left when the mode was at max timer. I will post a video of it tomorrow, with a review and code suggestions (unrelated to this issue, I don't know the exact cause sadly).

As always, appreciate the help!

Copy link
Collaborator

@Fort-TM Fort-TM left a comment

Choose a reason for hiding this comment

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

Those are the things I noticed at the moment. If there's anything you are not sure of how to implement, let me know and I can help

I will also upload a video with the issue I mentioned later

Copy link
Collaborator

Choose a reason for hiding this comment

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

This dialog doesn't seem to be used anywhere

Comment on lines +37 to +52
UI::PushFont(Fonts::Header);
UI::Text("How RMST works");
UI::PopFont();
UI::Markdown(
"**Collaborative Survival:**\n" +
"- All players share the same timer and work as a team\n" +
"- When **any player** gets a goal medal, the **entire team** gets +3 minutes\n" +
"- When **any player** skips a map, the **entire team** loses -1 minute\n" +
"- The session ends when the shared timer reaches 0\n\n" +
"**Team Progress Tracking:**\n" +
"- Team achievements (total medals and skips) are shared\n" +
"- Individual contributions are tracked for recognition\n" +
"- MVP is determined by individual goals vs skips ratio\n" +
"- Real-time team progress updates\n\n"
);
UI::Separator();
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't think it's necessary to explain how the gamemode works

Comment on lines +74 to +83
UI::Text("Tips for a successful RMST session");
UI::PopFont();
UI::Markdown(
"- **True teamwork:** Any team member getting a goal medal helps everyone!\n" +
"- **Coordinate skips:** Discuss as a team before anyone skips a difficult map\n" +
"- **Divide and conquer:** Players can focus on different types of maps they're good at\n" +
"- **Watch the shared timer:** Keep track of team time and plan accordingly\n" +
"- **Use voice chat:** Communication is crucial for team coordination\n" +
"- **Celebrate together:** Every goal medal is a team achievement!\n" +
"- **Support each other:** Help teammates learn difficult sections\n\n"
Copy link
Collaborator

Choose a reason for hiding this comment

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

Same here

Comment on lines +59 to +64

// Handle SurvivalTogether mode separately to avoid conflict with Survival
if (RMC::selectedGameMode == RMC::GameMode::SurvivalTogether) {
gameMode = "RMST";
}

Copy link
Collaborator

Choose a reason for hiding this comment

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

This is not necessary because we don't create save files for online modes. The Start function in GlobalProperties is only called for RMS, RMC, RMO, etc.

Comment on lines +83 to +88

// Handle SurvivalTogether mode separately to avoid conflict with Survival
if (RMC::selectedGameMode == RMC::GameMode::SurvivalTogether) {
gameMode = "RMST";
}

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ditto

Comment on lines +511 to +527
void BetterChatSendLeaderboard() {
#if DEPENDENCY_BETTERCHAT
if (m_playerScores.Length == 0) return;

m_playerScores.SortDesc();
string leaderboard = Icons::Users + " RMST Team Results:\n";
leaderboard += "Team Achievement: " + tostring(RMC::GoalMedalCount) + " " + tostring(PluginSettings::RMC_GoalMedal) + " medals, " + Skips + " skips\n";
leaderboard += "Individual Contributions:\n";

for (uint i = 0; i < Math::Min(m_playerScores.Length, 5); i++) {
RMSTPlayerScore@ player = m_playerScores[i];
leaderboard += (i+1) + ". " + player.name + ": " + player.goals + " goals, " + player.skips + " skips\n";
}

BetterChat::SendChatMessage(leaderboard);
#endif
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ditto

}
}

void RenderPlayingButtons() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
void RenderPlayingButtons() {
void RenderPlayingButtons() override {

// For now, empty implementation
}

void RenderCurrentMap() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
void RenderCurrentMap() {
void RenderCurrentMap() override {

#endif
}

void RenderCustomSearchWarning() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
void RenderCustomSearchWarning() {
void RenderCustomSearchWarning() override {

Copy link
Collaborator

@Fort-TM Fort-TM Jun 7, 2025

Choose a reason for hiding this comment

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

In general, there's no need to keep track of individual skips, only the host can skip maps

@Fort-TM
Copy link
Collaborator

Fort-TM commented Jun 8, 2025

And here's the video I promised

Trackmania.-.2025-06-07.21-05-19.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants