Jump to content
  • 0

Server antag selection


Killerhurtz

Question

7 answers to this question

Recommended Posts

  • 0

Lets use traitor for an example on this one.


First the job controller assigns everyone a job

Then the game ticker goes through what is called pre_setup() which is where antags are selected


First the ticker finds out what jobs are not allowed to be a traitor by calling get_players_for_role()

It makes a list of who is allowed/wants to be a traitor taking into account antag bans.

It will then shuffle that list so that lower pings are not always selected first.

It will then go through the list of players selected and see if there is enough for the gamemode, if there isn't then it will go through the list of people who VOTED for the gamemode and pick people from that

It will then go through the restricted jobs to make sure no one was selected that shouldn't be (Captain/HoS/IAA)

That's the end of get_players_for_role() what you end up with is a list of people who are viable for antag.

It will only select people who voted for the gamemode IF there isn't enough people who have antag selected (I will not be changing this)


If the are no people selected it with return 0 which means start again (Or on non-secret rounds, start the lobby timer again)

If there are people then this little equation gets made "max(1, round((num_players())/(traitor_scaling_coeff)))" Basicly it selects the maximum amount of antags for game start

usually this means that for every 9-10 players and antag is made.


Then once more pre_setup() will go through the list of possible antags to see if they have a restricted job, if they do it removes them from the list.

Then comes the fun part. While the amount of traitors is lower than the maximum amount selected it will pick a random player out of the list of possible antags and make them an antag, then remove them from the list for the next.


Again if there are no antags at this point it will return 0 and restart the lobby, if there are antags it's game on.


Every gamemode pretty much follows this guideline (Excptions are Heist, Nuke, Wizard) Where these select the antags in can_start() rather than pre_setup()

and Malf where it see's if the AI wants to be malf then if it's antag banned from malf.

Mutiny is another load of madness that I don't want to write up just now.


What does your nanotrasen relation (Opposed, Skeptical, loyal, ect...) have to do with antag selection. Nothing!

What does nanotrasen relation do then? Well the more opposed you are the more likely that your name is going to end up on the list of suspects who may be affiliated with the Syndicate that the heads of staff get every round.


Please note every time I say random, I mean Random Number Generator. Because you can't have 100% random selection with computers.


Source: I read through the code while typing this up. I have spent the last week in the gamemode ticker to fix malf AI bans because previous coders decided the lazy way would be to not do them.

Link to comment
  • 0

If you get selected as antag and end up on the list as a traitor, you get 2-4 Telecrystals added to your uplink.


So, your antag characters IDEALLY should have Opposed for a chance to get a little advantage. Like, double revolvers. Fuck yeah.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...