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
@@ -29,9 +29,9 @@
/obj/effect/mob_spawn/corpse/human/legioninfested/Initialize(mapload)
var/corpse_theme = pick_weight(list(
"Miner" = 66,
"Ashwalker" = 10,
"Clown" = 10,
"Miner" = 64,
"Clown" = 5,
"Ashwalker" = 15,
"Golem" = 10,
pick(list(
"Cultist",
@@ -45,12 +45,44 @@
outfit = /datum/outfit/consumed_miner
if("Ashwalker")
outfit = /datum/outfit/consumed_ashwalker
if("Golem")
outfit = /datum/outfit/consumed_golem
if("Clown")
outfit = /datum/outfit/consumed_clown
if("Cultist")
outfit = /datum/outfit/consumed_cultist
if("Dame")
outfit = /datum/outfit/consumed_dame
if("Operative")
outfit = /datum/outfit/syndicatecommandocorpse/lessenedgear
if("Shadow")
outfit = /datum/outfit/consumed_shadowperson
. = ..()
/obj/effect/mob_spawn/corpse/human/legioninfested/snow/Initialize(mapload)
var/corpse_theme = pick_weight(list(
"Miner" = 64,
"Clown" = 5,
"Golem" = 15,
"Settler" = 10,
pick(list(
"Cultist",
"Heremoth",
"Operative",
"Shadow",
)) = 4,
))
switch(corpse_theme)
if("Miner")
outfit = /datum/outfit/consumed_miner
if("Settler")
outfit = /datum/outfit/consumed_ice_settler
if("Heremoth")
outfit = /datum/outfit/consumed_heremoth
if("Clown")
outfit = /datum/outfit/consumed_clown
if("Cultist")
outfit = /datum/outfit/consumed_cultist
if("Golem")
outfit = /datum/outfit/consumed_golem
if("Operative")
@@ -222,6 +254,36 @@
if(prob(50))
neck = /obj/item/bedsheet/rd/royal_cape
/datum/outfit/consumed_ice_settler
name = "Legion-Consumed Settler"
uniform = /obj/item/clothing/under/costume/traditional
suit = /obj/item/clothing/suit/hooded/wintercoat
shoes = /obj/item/clothing/shoes/winterboots
mask = /obj/item/clothing/mask/breath
/datum/outfit/consumed_ice_settler/pre_equip(mob/living/carbon/human/ice_settler, visualsOnly = FALSE)
if(prob(40))
r_pocket = pick_weight(list(
/obj/item/coin/silver = 5,
/obj/item/fishing_hook = 2,
/obj/item/coin/gold = 2,
/obj/item/fishing_hook/shiny = 1,
))
if(prob(30))
back = pick_weight(list(
/obj/item/pickaxe = 4,
/obj/item/tank/internals/oxygen = 6,
))
else
back = /obj/item/storage/backpack/satchel/explorer
backpack_contents = list()
var/backpack_loot = pick(list(
/obj/item/food/fishmeat = 89,
/obj/item/food/fishmeat/carp = 10,
/obj/item/skeleton_key = 1,
))
backpack_contents += backpack_loot
//this is so pointlessly gendered but whatever bro i'm here to refactor not judge
/datum/outfit/consumed_dame
name = "Legion-Consumed Dame"
@@ -274,3 +336,26 @@
/obj/item/stack/sheet/runed_metal = 15,
)
r_pocket = /obj/item/clothing/glasses/hud/health/night/cultblind
/datum/outfit/consumed_heremoth
name = "Legion-Consumed Tribal Mothman"
uniform = /obj/item/clothing/under/costume/loincloth
suit = /obj/item/clothing/suit/hooded/cultrobes/eldritch
head = /obj/item/clothing/head/hooded/cult_hoodie/eldritch
/datum/outfit/consumed_heremoth/pre_equip(mob/living/carbon/human/moth, visualsOnly = FALSE)
if(!visualsOnly)
moth.set_species(/datum/species/moth)
if(prob(70))
glasses = /obj/item/clothing/glasses/blindfold
if(prob(90))
back = /obj/item/storage/backpack/cultpack
backpack_contents = list()
var/backpack_loot = pick(list(
/obj/item/flashlight/lantern = 1,
/obj/item/toy/plush/moth = 1,
/obj/item/toy/eldritch_book = 2,
/obj/item/knife/combat/survival = 2,
))
backpack_contents += backpack_loot
@@ -48,10 +48,6 @@
/// Dead headcrab for changeling-themed ruins
/obj/effect/mob_spawn/corpse/headcrab
mob_type = /mob/living/basic/headslug
mob_type = /mob/living/basic/headslug/beakless
icon = 'icons/mob/simple/animal.dmi'
icon_state = "headslug_dead"
/obj/effect/mob_spawn/corpse/headcrab/special(mob/living/basic/headslug/crab)
. = ..()
crab.egg_lain = TRUE // Prevents using mad science to become a changeling
@@ -101,7 +101,7 @@
CRASH("[type] created a golem without a mind.")
new_spawn.mind.enslave_mind_to_creator(real_owner)
to_chat(new_spawn, span_userdanger("Serve [real_owner], and assist [real_owner.p_them()] in completing [real_owner.p_their()] goals at any cost."))
to_chat(new_spawn, span_userdanger("Serve [real_owner.real_name], and assist [real_owner.p_them()] in completing [real_owner.p_their()] goals at any cost."))
/obj/effect/mob_spawn/ghost_role/human/golem/servant/name_mob(mob/living/spawned_mob, forced_name)
if(forced_name || !iscarbon(spawned_mob))
@@ -129,7 +129,8 @@
name = "Space Bartender"
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/space_bartender
uniform = /obj/item/clothing/under/rank/civilian/bartender
neck = /obj/item/clothing/neck/bowtie
uniform = /obj/item/clothing/under/costume/buttondown/slacks/service
suit = /obj/item/clothing/suit/armor/vest
back = /obj/item/storage/backpack
glasses = /obj/item/clothing/glasses/sunglasses/reagent
@@ -23,7 +23,7 @@
/obj/structure/spider/eggcluster/examine_more(mob/user)
. = ..()
if(istype(user, /mob/living/basic/giant_spider/midwife))
if(istype(user, /mob/living/basic/spider/giant/midwife))
switch(spawner.amount_grown)
if(0 to 24)
. += span_info("These eggs look shrunken and dormant.")
@@ -74,12 +74,12 @@
var/obj/structure/spider/eggcluster/egg
/// The types of spiders that the spawner can produce
var/list/potentialspawns = list(
/mob/living/basic/spiderling/nurse,
/mob/living/basic/spiderling/hunter,
/mob/living/basic/spiderling/ambush,
/mob/living/basic/spiderling/tangle,
/mob/living/basic/spiderling/guard,
/mob/living/basic/spiderling/scout,
/mob/living/basic/spider/growing/spiderling/nurse,
/mob/living/basic/spider/growing/spiderling/hunter,
/mob/living/basic/spider/growing/spiderling/ambush,
/mob/living/basic/spider/growing/spiderling/tangle,
/mob/living/basic/spider/growing/spiderling/guard,
/mob/living/basic/spider/growing/spiderling/scout,
)
/// Do we flash the byond window when this particular egg type is available?
var/flash_window = FALSE
@@ -122,11 +122,13 @@
to_chat(user, span_warning("\The [src] is not ready to hatch yet!"))
return FALSE
/obj/effect/mob_spawn/ghost_role/spider/special(mob/living/basic/giant_spider/spawned_mob, mob/mob_possessor)
/obj/effect/mob_spawn/ghost_role/spider/special(mob/living/basic/spider/spawned_mob, mob/mob_possessor)
. = ..()
spawned_mob.directive = directive
egg.spawner = null
QDEL_NULL(egg)
return ..()
var/datum/antagonist/spider/spider_antag = new(directive)
spawned_mob.mind.add_antag_datum(spider_antag)
/obj/effect/mob_spawn/ghost_role/spider/enriched
name = "enriched egg cluster"
@@ -134,9 +136,9 @@
you_are_text = "You are an enriched spider."
cluster_type = /obj/structure/spider/eggcluster/enriched
potentialspawns = list(
/mob/living/basic/spiderling/tarantula,
/mob/living/basic/spiderling/viper,
/mob/living/basic/spiderling/midwife,
/mob/living/basic/spider/growing/spiderling/tarantula,
/mob/living/basic/spider/growing/spiderling/viper,
/mob/living/basic/spider/growing/spiderling/midwife,
)
flash_window = TRUE
@@ -148,7 +150,7 @@
directive = "You are the spawn of a vicious changeling. You have no ambitions except to wreak havoc and ensure your own survival. You are aggressive to all living beings outside of your species, including changelings."
cluster_type = /obj/structure/spider/eggcluster/bloody
potentialspawns = list(
/mob/living/basic/spiderling/hunter/flesh,
/mob/living/basic/spider/giant/hunter/flesh,
)
flash_window = TRUE
@@ -159,7 +161,7 @@
directive = "Ensure the survival of the spider species and overtake whatever structure you find yourself in."
cluster_type = /obj/structure/spider/eggcluster/midwife
potentialspawns = list(
/mob/living/basic/spiderling/midwife,
/mob/living/basic/spider/giant/midwife, // We don't want the event to end instantly because of a 2 hp spiderling dying
)
flash_window = TRUE
@@ -176,9 +178,9 @@
var/list/spider_list = list()
var/list/display_spiders = list()
for(var/choice in potentialspawns)
var/mob/living/basic/spiderling/chosen_spiderling = choice
var/mob/living/basic/young_spider/young_spider = initial(chosen_spiderling.grow_as)
var/mob/living/basic/giant_spider/spider = initial(young_spider.grow_as)
var/mob/living/basic/spider/growing/spiderling/chosen_spiderling = choice
var/mob/living/basic/spider/growing/young/young_spider = initial(chosen_spiderling.grow_as)
var/mob/living/basic/spider/giant/spider = initial(young_spider.grow_as) // God this is so stupid
spider_list[initial(spider.name)] = chosen_spiderling
var/datum/radial_menu_choice/option = new
@@ -129,7 +129,8 @@
/datum/outfit/cryobartender
name = "Cryogenic Bartender"
uniform = /obj/item/clothing/under/rank/civilian/bartender
neck = /obj/item/clothing/neck/bowtie
uniform = /obj/item/clothing/under/costume/buttondown/slacks/service
suit = /obj/item/clothing/suit/armor/vest
back = /obj/item/storage/backpack
glasses = /obj/item/clothing/glasses/sunglasses/reagent