mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 10:03:50 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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:"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user