Mulligan

Материал из SS220 /tg/station13 (Space Station 13)
Перейти к навигации Перейти к поиску
Paper.png Removed

Hudxeno.png As of June 9, 2021, Mulligans have been significantly changed or perhaps removed due to the introduction of dynamic mode and this page hasn't been updated since 2015. This pace is outdated as fuck for no purpose. Hudxeno.png

See https://github.com/tgstation/tgstation/pull/44639, https://github.com/tgstation/tgstation/pull/58470 and for the pull requests.

Disclaimer: This system is in active development, expect this page to change with new updates and functionality as they are created. works in a way significantly different from what's described here now. This page was written years before dynamic mode.

Mulligans are an inbuilt judgement system in space station 13 that seeks to keep things interesting when the normal flow of traitors, changelings, wizards, and whatever other threat(s) of the day fail to cause enough havoc to make life difficult for the crew.

Note: The mulligan system can only be modified by administration and hosts, players cannot perceive when mulligans take place and can't meaningfully change their execution. As such this guide is written mainly for the aforementioned admins and hosts.

When It Happens

Mulligans occur when ALL existing antagonists are dead and a round isn't set to end when that happens (configurable in game_options.txt as CONTINUOUS). If new antagonists have been created by the game or admins during the course of a round they will also need to have died. So long as there is any hope of someone with a license to griff to make things interesting mulligan will not step in.

It's possible, though exceedingly rare, for a double mulligan to occur if all the antagonists from the first mulligan also die.

Tip: If you want to add a custom antagonist midround that isn't traditionally defined in the code to mulligan checking, go into the antagonist's mind and give them a special_role (it's a string)

Backing Out

Once the mulligan figures out that it should try to happen, it will run through a number of checks to try and determine if the round would still come to a close soon without its intervention. It performs the following checks in this order:

1. Are there a lot of dead people?

If the percentage of dead humans exceeds midround_antag_life_check (configurable in game_options.txt, defaults to 70% living crew) the mulligan will back out.

2. Are there any modes to mulligan into?

Currently only a few modes are supported for mulliganing into (traitor, changeling, and traitor/ling) and a mode won't try to mulligan into itself. If after checking the number of players in the round and the current mode there's no where for the system to go, the mulligan will back out.

3. Is the escape shuttle almost here?

If the escape shuttle has passed the point of no return, or has already arrived or left for centcom, the mulligan will back out.

4. Has the station been occupied for a long time?

If the round has been going longer than midround_antag_time_check (configurable in game_options.txt, defaults to 60 minutes) the mulligan will back out.

5. Does anyone want to be an antagonist like this?

Players can opt out of becoming an antagonist midround with this shift with the preference allow_midround_antag. In the extremely unlikely case where no one is capable of being an antag in the chosen new mode the mulligan will back out.

Note: Currently all mulligans draw from living players, but in the future off station antags such as nuke teams or wizards would choose from ghosts.

When It Backs Out

When a mulligan backs out admins will receive a message from convert_roundtype stating why it happened.

If the reason the mulligan backed out was because the shuttle was already inevitable, the round will be allowed to play out to a normal ending by docking at centcom.

Otherwise:

In roundtypes with a singular focus antagonist like a wizard or a blob or a malfuctioning AI, the round ends immediately upon backing out.

In other modes the round will continue silently as extended if the mulligan backs out.

Tip: If a mulligan backs out, the system will be turned off for the round. It can be turned on again in the check antagonist screen if you believe the conditions that caused it no longer exist (or you can just create your own fun for the station).

When It Proceeds

If the mulligan system determines that it should continue the admins will receive a message warning them that it's going to try and create antagonists. They'll also get options to turn off the mulligan if they feel it is not needed (or if they want to create their own shenanigans), or end the round if the station seems to utterly screwed in a way too subjective for the mulligan system to pick up on. These choices can also be found at any time in the check antagonist screen.

After a period of two to five minutes, both to allow admins the chance to see if they want it and to prevent crew from immediately shooting each other right after killing the old antags, the mulligan itself will occur. At this point everyone who opted into both the antag role to add and allow_midround_antag will get a roll at that antag status.

The number of antagonists made this way are dictated by the same configuration settings that control how many antagonists are created in latejoin antag, so the final number of new antagonists will reflect the number of antagonists that would have existed had a round started as this mode with the current population of crew.

After It Mulligans

Once the new antagonists are made, the mulligan system will start tracking them in place of the original ones. Late joining players will likewise start using the roll for the mulligan mode instead of the base mode. If the new mode allows the shuttle to leave but the old one didn't, the shuttle will now be able to leave when it is called.

Certain highly disruptive elements from the old mode such as summon magic or code delta will be turned off.

If the original antagonists are brought back into the round somehow they are every bit as much antagonists as before they died and they can still pursue their original objectives.

Working With Mulligans

Options for mulligans can be adjusted from within the round by admins even before they occur in the check antagonist screen. Under "Continuous Round Status" you'll see a description of what will occur.

End on antagonist death: This means that if the antag(s) all die, the round end report will print and the round will end shortly thereafter.

Continue if antagonists die, not creating new antagonists: This is the status where the mulligan system is disabled but rounds won't end spontaneously, the mulligan system enters this state automatically if it backs out.

Continue if antagonists die, creating replacement antagonists: The mulligan system is primed and checking the status of the antags to see if it should attempt to create new ones. If a mulligan is successful it will remain in this state.

Clicking parts of the sentence will change the behaviors for the round when and if all antagonists die.

Tip: Clicking "Continue if antagonist die" to change it to "End on antagonist death" will end the round immediately if all the antagonists were already dead before this. Likewise clicking "not creating new antagonists" to change it to "creating replacement antagonists" will automatically attempt a mulligan immediately in the same circumstances.

Reporting Bugs

This is a system with a lot of working parts that is intermingled with the convoluted system that is game mode code. Often times when faced with new situations it may exhibit odd behaviors or react in ways that seem buggy. If you see this happen, especially after toggling options to create rare situations (like making a continuous revolution round) PLEASE REPORT YOUR BUGS TO GITHUB. This is a system actively under development, and until every possibly is tested for in a live server, the little eccentricities of the code will continue to appear.