mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-09 00:13:55 +00:00
## About The Pull Request ### Before: Dynamic wants a latejoin. Dynamic will collate all latejoin rulesets that are eligible to execute. The latejoin-er is guaranteed to become an antagonist, so long as any ruleset is valid. It runs down the list of rulesets and tries to apply it until it succeeds Then the latejoin injection timer is incremented for the next time. <Details> <Summary> This leads to the following: </Summary>  </Details> ### After ( with this pr ): Dynamic wants a latejoin. Dynamic will collate all latejoin rulesets that are eligible to execute. Dynamic will then select **one** of the valid rulesets, based on weight, to attempt to apply to the incoming latejoiner. If the latejoiner is not a valid candidate, such as not having that antagonist enabled in their preferences, it will not reroll the ruleset. Do not pass go, do not collect 200 dollars, do not get antag. The latejoin injection timer will not be incremented, so the very next latejoin will be checked the same, until one eventually succeeds.  ## Why It's Good For The Game Dynamic latejoin handling is kinda poor, I believe Mothblocks has talked about this a bit before but hasn't done much to it yet. Compared to roundstart and latejoin, which can select out of everyone which has the preference enabled, latejoin rulesets are not spoiled for choice, which makes weighting the rulesets useless. If you only have traitor enabled, the only latejoin antag you can be is traitor. And if dynamic wants a latejoin, while you can only be traitor, **you will ALWAYS become a traitor**. The weight of the traitor ruleset or any other ruleset doesn't matter, because at the end of the day, the only valid ruleset is traitor. This makes latejoins much less of a guaranteed thing, and will (hopefully) spread it out a bit more, reducing likelihood of rarer latejoin antags. ## Changelog 🆑 Melbert balance: You are now slightly less likely, statistically, to get an antag role on latejoin fix: Fixed latejoin antags being logged as "midround" antags /🆑
35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
/// This is the only ruleset that should be picked this round, used by admins and should not be on rulesets in code.
|
|
#define ONLY_RULESET (1 << 0)
|
|
|
|
/// Only one ruleset with this flag will be picked.
|
|
#define HIGH_IMPACT_RULESET (1 << 1)
|
|
|
|
/// This ruleset can only be picked once. Anything that does not have a scaling_cost MUST have this.
|
|
#define LONE_RULESET (1 << 2)
|
|
|
|
/// This is a "heavy" midround ruleset, and should be run later into the round
|
|
#define MIDROUND_RULESET_STYLE_HEAVY "Heavy"
|
|
|
|
/// This is a "light" midround ruleset, and should be run early into the round
|
|
#define MIDROUND_RULESET_STYLE_LIGHT "Light"
|
|
|
|
/// No round event was hijacked this cycle
|
|
#define HIJACKED_NOTHING "HIJACKED_NOTHING"
|
|
|
|
/// This cycle, a round event was hijacked when the last midround event was too recent.
|
|
#define HIJACKED_TOO_RECENT "HIJACKED_TOO_RECENT"
|
|
|
|
/// Kill this ruleset from continuing to process
|
|
#define RULESET_STOP_PROCESSING 1
|
|
|
|
/// Requirements when something needs a lot of threat to run, but still possible at low-pop
|
|
#define REQUIREMENTS_VERY_HIGH_THREAT_NEEDED list(90,90,90,80,60,50,40,40,40,40)
|
|
|
|
/// Max number of teams we can have for the abductor ruleset
|
|
#define ABDUCTOR_MAX_TEAMS 4
|
|
|
|
// Ruletype defines
|
|
#define ROUNDSTART_RULESET "Roundstart"
|
|
#define LATEJOIN_RULESET "Latejoin"
|
|
#define MIDROUND_RULESET "Midround"
|