Allows AI to roll traitor on traitor cling, Allows more clings / vampires in (cling/vampire)traitor mode. (#15452)

* Allows AI to roll traitor on traitor cling, Allows secondary antagonist scaling

* Apply suggestions from code review

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>

Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2021-02-27 06:49:55 -05:00
committed by GitHub
parent 2c57224cfc
commit d510702d4f
3 changed files with 39 additions and 19 deletions
+16 -8
View File
@@ -2,11 +2,13 @@
name = "traitor+changeling"
config_tag = "traitorchan"
traitors_possible = 3 //hard limit on traitors if scaling is turned off
restricted_jobs = list("AI", "Cyborg")
restricted_jobs = list("Cyborg")
secondary_restricted_jobs = list("AI") // Allows AI to roll traitor, but not changeling
required_players = 10
required_enemies = 1 // how many of each type are required
recommended_enemies = 3
var/protected_species_changeling = list("Machine")
secondary_enemies_scaling = 0.025
secondary_protected_species = list("Machine")
/datum/game_mode/traitor/changeling/announce()
to_chat(world, "<B>The current game mode is - Traitor+Changeling!</B>")
@@ -18,17 +20,23 @@
restricted_jobs += protected_jobs
var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING)
secondary_enemies = CEILING((secondary_enemies_scaling * num_players()), 1)
for(var/mob/new_player/player in GLOB.player_list)
if((player.mind in possible_changelings) && (player.client.prefs.species in protected_species_changeling))
if((player.mind in possible_changelings) && (player.client.prefs.species in secondary_protected_species))
possible_changelings -= player.mind
if(possible_changelings.len > 0)
var/datum/mind/changeling = pick(possible_changelings)
changelings += changeling
modePlayer += changelings
changeling.restricted_roles = restricted_jobs
changeling.special_role = SPECIAL_ROLE_CHANGELING
for(var/I in possible_changelings)
if(length(changelings) >= secondary_enemies)
break
var/datum/mind/changeling = pick(possible_changelings)
changelings += changeling
modePlayer += changelings
possible_changelings -= changeling
changeling.restricted_roles = (restricted_jobs + secondary_restricted_jobs)
changeling.special_role = SPECIAL_ROLE_CHANGELING
return ..()
else
return 0
+4
View File
@@ -20,11 +20,15 @@
var/explosion_in_progress = 0 //sit back and relax
var/list/datum/mind/modePlayer = new
var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
var/list/secondary_restricted_jobs = list() // Same as above, but for secondary antagonists
var/list/protected_jobs = list() // Jobs that can't be traitors
var/list/protected_species = list() // Species that can't be traitors
var/list/secondary_protected_species = list() // Same as above, but for secondary antagonists
var/required_players = 0
var/required_enemies = 0
var/recommended_enemies = 0
var/secondary_enemies = 0
var/secondary_enemies_scaling = 0 // Scaling rate of secondary enemies
var/newscaster_announcements = null
var/ert_disabled = 0
var/uplink_welcome = "Syndicate Uplink Console:"
+19 -11
View File
@@ -3,11 +3,13 @@
config_tag = "traitorvamp"
traitors_possible = 3 //hard limit on traitors if scaling is turned off
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer")
restricted_jobs = list("AI", "Cyborg")
restricted_jobs = list("Cyborg")
secondary_restricted_jobs = list("AI")
required_players = 10
required_enemies = 1 // how many of each type are required
recommended_enemies = 3
var/protected_species_vampire = list("Machine")
secondary_enemies_scaling = 0.025
secondary_protected_species = list("Machine")
/datum/game_mode/traitor/vampire/announce()
to_chat(world, "<B>The current game mode is - Traitor+Vampire!</B>")
@@ -19,20 +21,26 @@
restricted_jobs += protected_jobs
var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE)
secondary_enemies = CEILING((secondary_enemies_scaling * num_players()), 1)
for(var/mob/new_player/player in GLOB.player_list)
if((player.mind in possible_vampires) && (player.client.prefs.species in protected_species_vampire))
if((player.mind in possible_vampires) && (player.client.prefs.species in secondary_protected_species))
possible_vampires -= player.mind
if(possible_vampires.len > 0)
var/datum/mind/vampire = pick(possible_vampires)
vampires += vampire
modePlayer += vampires
var/datum/mindslaves/slaved = new()
slaved.masters += vampire
vampire.som = slaved //we MIGT want to mindslave someone
vampire.restricted_roles = restricted_jobs
vampire.special_role = SPECIAL_ROLE_VAMPIRE
for(var/I in possible_vampires)
if(length(vampires) >= secondary_enemies)
break
var/datum/mind/vampire = pick(possible_vampires)
vampires += vampire
modePlayer += vampires
possible_vampires -= vampire
var/datum/mindslaves/slaved = new()
slaved.masters += vampire
vampire.som = slaved //we MIGHT want to mindslave someone
vampire.restricted_roles = (restricted_jobs + secondary_restricted_jobs)
vampire.special_role = SPECIAL_ROLE_VAMPIRE
..()
return 1
else