-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
refactor event schedulers to use explicit game rules #29320
refactor event schedulers to use explicit game rules #29320
Conversation
would it make sense to exclude rules from a possible choice if it has already been selected before? thus ensuring that all rules are selected before they start repeating |
You could achieve this by rule by setting the specific rule's params |
Survival not getting gifts from NT was an accident, but it is funny, so I'm leaving it. |
Ready for review. I handled all the issues I could dream up. |
Content.Server/GameTicking/Rules/Components/RandomRuleComponent.cs
Outdated
Show resolved
Hide resolved
Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs
Outdated
Show resolved
Hide resolved
|
||
/// <summary> | ||
/// The gamerules that the scheduler can choose from | ||
/// </summary> | ||
[DataField(required: true)] | ||
public List<EntitySpawnEntry> ScheduledGameRules = new(); | ||
} |
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.
Aren't these supposed to be components on the entity anyway.
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.
Some use type to subset the events like the secret gamerule, but that doesn't allow for using them in multiple different places with different balance if you wanted to. I didn't remove the type schema though because I didn't want to mess up the secret game rule or something else I hadn't considered.
Should all be addressed with the exception of the IComponentFactory dependency thing which I think I need a hint on if its a big issue. |
you can grab it by doing |
Thanks! done! |
Content.Server/StationEvents/Components/BasicStationEventSchedulerComponent.cs
Outdated
Show resolved
Hide resolved
Woohoo She floats! Okay I updated this to use EntitySpawnEntries. The only thing I'm kind of uncertain about working is the toolshed commands in the BasicStationEventSchedulerSystem. |
…9320) * works, still has testing values, im sure I did stupid shit. * shitvent crapfactor * snap extra word out of existence * shit I died of old * remove useless inaccurate design comments * Oopsie, handle requirement params in RandomRuleSystem too * I'm a slash slinging hasher * Address reviews, add admin alerts I forgor * EntityMan saves the day * address reviews 1 * eh, I actually don't care about the cargo gifts thing. * started * Do reviews * you actually meant 1.2 lmao * dependency inheritance is a fickle bitch * I have no idea. * Threads are for sheets not computers. * fix traitor rule test * fix round type tattling * break things * It worky * Toolshed makes we want to drink depresso. * Finished? * remove debug values * timings * use defaults * alphabetize * bobby drop tables * Float required fr fr * continue * more continence * uno mas * obsolution * cleanup and documentations * Yell at self * use the right value defaults * housekeeping
Hello! Do you know of a bug that may have been caused by your changes? Check this issue: #31090 |
I have been sent a couple occurrences, but have thus far been unable to replicate it. Please do let me know of more occurrences, or if you find a consistent occurrence. |
About the PR
Refactors basic & ramping event scheduler to take explicit event definitions in yml instead of just doing whatever the hell they wanted to. Also ported meteor scheduler over to the other scheduler types with more variety.
Added two (really just tweaked) gamemodes as rare chances in secret to flex the scheduler utility a bit.
Why / Balance
Shuttle events, gift events, the desire to add things that shouldn't be in event schedulers.
I cannot overstate how many levers this adds to event balancing by using combinations of multiple schedulers, table selectors & station event weights.
Technical details
Now uses EntityTableSelectors. Also, since it allows for multiple uses of the different event schedulers I removed the ccvars for meteors and ramping schedulers and placed them on the components.
Media
Breaking changes
The cvars for ramping event scheduler severity and for meteor timing have been removed, and moved to fields on their respective components.
If you have events you want run via the basic/ramping event scheduler, they need to be defined explicitly now.
Changelog
🆑