-
-
Notifications
You must be signed in to change notification settings - Fork 32
Attempt to implement Random Map Survival Together #155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…andom * 'main' of https://github.com/monsonjeremy/openplanet-MXRandom: Update src/Interface/Views/RMCMenu.as
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! |
There was a problem hiding this 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.
Co-authored-by: Philippe <phil.hebert14@gmail.com>
Co-authored-by: Philippe <phil.hebert14@gmail.com>
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! |
There was a problem hiding this 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
There was a problem hiding this comment.
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
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(); |
There was a problem hiding this comment.
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
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" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here
|
||
// Handle SurvivalTogether mode separately to avoid conflict with Survival | ||
if (RMC::selectedGameMode == RMC::GameMode::SurvivalTogether) { | ||
gameMode = "RMST"; | ||
} | ||
|
There was a problem hiding this comment.
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.
|
||
// Handle SurvivalTogether mode separately to avoid conflict with Survival | ||
if (RMC::selectedGameMode == RMC::GameMode::SurvivalTogether) { | ||
gameMode = "RMST"; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto
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 | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto
} | ||
} | ||
|
||
void RenderPlayingButtons() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
void RenderPlayingButtons() { | |
void RenderPlayingButtons() override { |
// For now, empty implementation | ||
} | ||
|
||
void RenderCurrentMap() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
void RenderCurrentMap() { | |
void RenderCurrentMap() override { |
#endif | ||
} | ||
|
||
void RenderCustomSearchWarning() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
void RenderCustomSearchWarning() { | |
void RenderCustomSearchWarning() override { |
There was a problem hiding this comment.
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
And here's the video I promised Trackmania.-.2025-06-07.21-05-19.mp4 |
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.