Merge remote-tracking branch 'skrat/master' into upstream-aug-29

# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/ci_suite.yml
#	README.md
#	code/controllers/subsystem/processing/quirks.dm
#	code/modules/antagonists/space_ninja/space_ninja.dm
#	code/modules/client/preferences/middleware/quirks.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm
#	code/modules/research/techweb/all_nodes.dm
#	code/modules/vehicles/sealed.dm
#	modular_skyrat/modules/automapper/code/area_spawn_subsystem.dm
#	modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm
#	modular_skyrat/modules/veteran_players/code/veteran_players.dm
This commit is contained in:
nevimer
2023-08-29 23:20:28 -04:00
1690 changed files with 43633 additions and 97327 deletions
+46 -35
View File
@@ -1,6 +1,48 @@
#define EXP_ASSIGN_WAYFINDER 1200
#define RANDOM_QUIRK_BONUS 3
#define MINIMUM_RANDOM_QUIRKS 3
// Shifted to glob so they are generated at world start instead of risking players doing preference stuff before the subsystem inits
GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/item_quirk/blindness, /datum/quirk/item_quirk/nearsighted),
list(/datum/quirk/jolly, /datum/quirk/depression, /datum/quirk/apathetic, /datum/quirk/hypersensitive),
list(/datum/quirk/no_taste, /datum/quirk/vegetarian, /datum/quirk/deviant_tastes, /datum/quirk/gamer),
list(/datum/quirk/pineapple_liker, /datum/quirk/pineapple_hater, /datum/quirk/gamer),
list(/datum/quirk/alcohol_tolerance, /datum/quirk/light_drinker),
list(/datum/quirk/item_quirk/clown_enjoyer, /datum/quirk/item_quirk/mime_fan, /datum/quirk/item_quirk/pride_pin),
list(/datum/quirk/bad_touch, /datum/quirk/friendly),
list(/datum/quirk/extrovert, /datum/quirk/introvert),
list(/datum/quirk/prosthetic_limb, /datum/quirk/quadruple_amputee, /datum/quirk/body_purist),
list(/datum/quirk/prosthetic_organ, /datum/quirk/tin_man, /datum/quirk/body_purist),
list(/datum/quirk/quadruple_amputee, /datum/quirk/paraplegic, /datum/quirk/hemiplegic),
list(/datum/quirk/quadruple_amputee, /datum/quirk/frail),
list(/datum/quirk/social_anxiety, /datum/quirk/mute),
list(/datum/quirk/mute, /datum/quirk/softspoken),
list(/datum/quirk/poor_aim, /datum/quirk/bighands),
list(/datum/quirk/bilingual, /datum/quirk/foreigner),
list(/datum/quirk/spacer_born, /datum/quirk/paraplegic, /datum/quirk/item_quirk/settler),
list(/datum/quirk/photophobia, /datum/quirk/nyctophobia),
list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning),
//SKYRAT EDIT ADDITION BEGIN
list(/datum/quirk/equipping/nerve_staple, /datum/quirk/nonviolent),
list(/datum/quirk/equipping/nerve_staple, /datum/quirk/item_quirk/nearsighted),
list(/datum/quirk/no_guns, /datum/quirk/bighands, /datum/quirk/poor_aim),
list(/datum/quirk/no_guns, /datum/quirk/nonviolent),
list(/datum/quirk/spacer_born, /datum/quirk/oversized),
//SKYRAT EDIT ADDITION END
))
GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist())
/proc/generate_quirk_string_blacklist()
var/list/string_blacklist = list()
for(var/blacklist in GLOB.quirk_blacklist)
var/list/string_list = list()
for(var/datum/quirk/typepath as anything in blacklist)
string_list += initial(typepath.name)
string_blacklist += list(string_list)
return string_blacklist
//Used to process and handle roundstart quirks
// - Quirk strings are used for faster checking in code
// - Quirk datums are stored and hold different effects, as well as being a vector for applying trait string
@@ -15,43 +57,12 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad
///An assoc list of quirks that can be obtained as a hardcore character, and their hardcore value.
var/list/hardcore_quirks = list()
/// A list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4)
var/static/list/quirk_blacklist = list(
list("Blind", "Nearsighted"),
list("Jolly", "Depression", "Apathetic", "Hypersensitive"),
list("Ageusia", "Vegetarian", "Deviant Tastes", "Gamer"),
list("Ananas Affinity", "Ananas Aversion", "Gamer"),
list("Alcohol Tolerance", "Light Drinker"),
list("Clown Enjoyer", "Mime Fan", "Pride Pin"),
list("Bad Touch", "Friendly"),
list("Extrovert", "Introvert"),
list("Prosthetic Limb", "Quadruple Amputee", "Body Purist"),
list("Prosthetic Organ", "Tin Man", "Body Purist"),
list("Quadruple Amputee", "Paraplegic", "Hemiplegic"),
list("Quadruple Amputee", "Frail"),
list("Social Anxiety", "Mute"),
list("Mute", "Soft-Spoken"),
list("Stormtrooper Aim", "Big Hands"),
list("Bilingual", "Foreigner"),
list("Spacer", "Paraplegic"),
list("Photophobia", "Nyctophobia"),
//SKYRAT EDIT ADDITION BEGIN
list("Nerve Stapled", "Pacifist"),
list("Nerve Stapled", "Nearsighted"),
list("No Guns", "Big Hands", "Stormtrooper Aim"),
list("No Guns", "Pacifist"),
list("Spacer", "Oversized"),
//SKYRAT EDIT ADDITION END
)
//BUBBER EDIT ADDITION START - Species quirks
/// A list of quirks that can only be used by a certain species. Format: list(quirk, species define)
var/static/list/quirk_species_whitelist = list(
list("Hydrophilic", "[SPECIES_SLIMESTART]")
)
//BUBBER EDIT ADDITION END
/datum/controller/subsystem/processing/quirks/Initialize()
get_quirks()
return SS_INIT_SUCCESS
@@ -119,7 +130,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
//Create a random list of stuff to start with
while(bonus_quirks > added_quirk_count)
var/quirk = pick(possible_quirks) //quirk is a string
if(quirk in quirk_blacklist) //prevent blacklisted
if(quirk in GLOB.quirk_blacklist) //prevent blacklisted
possible_quirks -= quirk
continue
if(quirk_points[quirk] > 0)
@@ -134,7 +145,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
if(!length(possible_quirks))//Lets not get stuck
break
var/quirk = pick(quirks)
if(quirk in quirk_blacklist) //prevent blacklisted
if(quirk in GLOB.quirk_blacklist) //prevent blacklisted
possible_quirks -= quirk
continue
if(!quirk_points[quirk] < 0)//negative only
@@ -149,7 +160,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
if(!length(possible_quirks))//Lets not get stuck
break
var/quirk = pick(quirks)
if(quirk in quirk_blacklist) //prevent blacklisted
if(quirk in GLOB.quirk_blacklist) //prevent blacklisted
possible_quirks -= quirk
continue
if(!quirk_points[quirk] > 0) //positive only
@@ -194,7 +205,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
var/blacklisted = FALSE
for (var/list/blacklist as anything in quirk_blacklist)
for (var/list/blacklist as anything in GLOB.quirk_blacklist)
if (!(quirk in blacklist))
continue