diff --git a/GainStation13/code/datums/ruins.dm b/GainStation13/code/datums/ruins.dm new file mode 100644 index 0000000000..7bf3cd3aaf --- /dev/null +++ b/GainStation13/code/datums/ruins.dm @@ -0,0 +1,34 @@ +/datum/map_template/ruin/space/feeders_den //GS13 + id = "feeders_den" + suffix = "feeders_den.dmm" + name = "Feeder Den" + description = "What used to be a small Syndicate prison and interrogration facility has been taken over by a degenerate madman and turned into a den fit for one purpose - to fatten up its captives." + placement_weight = 5 + +/datum/map_template/ruin/space/ //GS13 + id = "whiteship_cfc01" + suffix = "whiteship_CFC01.dmm" + name = "CFC-01 Whiteship" + description = "A whiteship belonging to representants of CFC Corporation." + +//commented out because this has been moved to its own seperate level +// /datum/map_template/ruin/space/fastfood //GS13 +// id = "fastfood" +// suffix = "fastfood.dmm" +// name = "Fast Food Restaurant" +// description = "In GATO controlled space, it isn't uncommon to find various space restaurants, famous for the abundance of corn oil in their foods." + +/datum/map_template/ruin/space/quantum_hub //GS13 + id = "quantum_hub" + suffix = "quantum_hub.dmm" + name = "Quantum Hub" + description = "A small hub containing a quantum pad connected to xenoarch along with three other rooms containing unlinked quantum pads and the parts needed to make new quantum pads." + cost = 0 + always_place = TRUE + +/datum/map_template/ruin/space/biodome/beach // GS13 + name = "Biodome Beach" + id = "biodome-beach" + description = "Seemingly plucked from a tropical destination, this beach is calm and cool, with the salty waves roaring softly in the background. \ + Comes with a rustic wooden bar and suicidal bartender." + suffix = "space_biodome_beach.dmm" diff --git a/GainStation13/code/machinery/cryogenic.dm b/GainStation13/code/machinery/cryogenic.dm new file mode 100644 index 0000000000..63b0b6aa1c --- /dev/null +++ b/GainStation13/code/machinery/cryogenic.dm @@ -0,0 +1,19 @@ +/obj/machinery/cryopod/tele //lore-friendly cryo thing + name = "Long-range Central Command teleporter" + desc = "A special mobility sleeper for storing agents in a disclosed location." + icon = 'GainStation13/icons/obj/Cryogenic2.dmi' + icon_state = "telepod-open" + on_store_message = "has teleported back to Central Command." + on_store_name = "Teleporter Oversight" + +/obj/machinery/cryopod/tele/open_machine() + ..() + icon_state = "telepod-open" + +/obj/machinery/cryopod/tele/close_machine(mob/user) + ..() + icon_state = "telepod" + +/obj/machinery/cryopod + /// Do we want to inform comms when someone cryos? + var/alert_comms = TRUE diff --git a/GainStation13/code/modules/mapping/ghost_roles.dm b/GainStation13/code/modules/mapping/ghost_roles.dm new file mode 100644 index 0000000000..d604f53251 --- /dev/null +++ b/GainStation13/code/modules/mapping/ghost_roles.dm @@ -0,0 +1,189 @@ +/obj/effect/mob_spawn/human/fastfood + name = "Corporate cryostasis pod" + desc = "Through the grease-stained cryopod glass, you can see someone sleeping inside..." + mob_name = "fastfood worker" + job_description = "Restaurant Worker" + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper" + death = FALSE + roundstart = FALSE + mob_species = /datum/species/human + short_desc = "It's the grand opening day!" + flavour_text = "After you've sold your soul to corporate overlords, your contract obliged you to enter cryostasis. \ + Finally, after God knows how long, the cryopod system have awakened you with only a single sentence of information - welcome and lure in new guests into the freshly opened GATO restaurant!" + assignedrole = "Restaurant worker" + +/obj/effect/mob_spawn/human/fastfoodmanager + name = "Corporate cryostasis pod" + desc = "Through the grease-stained cryopod glass, you can see someone sleeping inside..." + mob_name = "fastfood worker" + job_description = "Restaurant Manager" + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper" + death = FALSE + roundstart = FALSE + mob_species = /datum/species/human + short_desc = "It's the grand opening day!" + flavour_text = "After you've sold your soul to corporate overlords, your contract obliged you to enter cryostasis. \ + Finally, after God knows how long, the cryopod system have awakened you with only a single sentence of information - make sure to keep the best care of GATO's restaurant, currently under your management! You have a higher say over your workers, but do not abuse this power." + assignedrole = "Restaurant manager" + +/obj/effect/mob_spawn/human/fastfood/Initialize(mapload) + . = ..() + var/arrpee = rand(1,2) + switch(arrpee) + if(1) + flavour_text += "You are this restaurant's cook, using up the plethora of ingredients to cook up deliciously greasy and caloric foods. \ + The kitchen and the bar is your turf! Make sure the guests stay fed." + outfit.glasses = /obj/item/clothing/glasses/sunglasses/reagent + outfit.head = /obj/item/clothing/head/soft/black + outfit.uniform = /obj/item/clothing/under/sweater/purple + outfit.suit = /obj/item/clothing/suit/apron/chef + outfit.shoes = /obj/item/clothing/shoes/sneakers/black + outfit.back = /obj/item/storage/backpack + outfit.ears = /obj/item/radio/headset + outfit.id = /obj/item/card/id/silver/restaurant + if(2) + flavour_text += "You are this restaurant's waiter, responsible not only for tending to the guests, but also fixing and taking care of station's shape, power and looks. \ + Make sure everything looks squeaky clean and that the restaurant remains powered!" + outfit.head = /obj/item/clothing/head/soft/black + outfit.uniform = /obj/item/clothing/under/suit/waiter + outfit.shoes = /obj/item/clothing/shoes/sneakers/black + outfit.back = /obj/item/storage/backpack + outfit.ears = /obj/item/radio/headset + outfit.id = /obj/item/card/id/silver/restaurant + +/obj/effect/mob_spawn/human/fastfoodmanager/Initialize(mapload) + . = ..() + var/arrpee = rand(1,2) + switch(arrpee) + if(1) + flavour_text += "You are this restaurant's manager, taking care of all the necessary paperwork, overseeing all the workers... \ + But most importantly, you always have to make sure that the restaurant prospers and remains in good shape! " + outfit.glasses = /obj/item/clothing/glasses/sunglasses/reagent + outfit.uniform = /obj/item/clothing/under/suit/burgundy + outfit.shoes = /obj/item/clothing/shoes/sneakers/black + outfit.back = /obj/item/storage/backpack/satchel/leather + outfit.ears = /obj/item/radio/headset + outfit.id = /obj/item/card/id/silver/restaurant + outfit.l_pocket = /obj/item/modular_computer/tablet + + if(2) + flavour_text += "You are this restaurant's manager, taking care of all the necessary paperwork, overseeing all the workers... \ + But most importantly, you always have to make sure that the restaurant prospers and remains in good shape! " + outfit.glasses = /obj/item/clothing/glasses/sunglasses/reagent + outfit.uniform = /obj/item/clothing/under/suit/navy + outfit.shoes = /obj/item/clothing/shoes/sneakers/black + outfit.back = /obj/item/storage/backpack/satchel/leather + outfit.ears = /obj/item/radio/headset + outfit.id = /obj/item/card/id/silver/restaurant + outfit.l_pocket = /obj/item/modular_computer/tablet + +/obj/effect/mob_spawn/human/fastfood/special(mob/living/carbon/human/new_spawn) + ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) + +/obj/effect/mob_spawn/human/fastfood/Destroy() + new/obj/structure/fluff/empty_sleeper(get_turf(src)) + return ..() + + +/obj/effect/mob_spawn/human/fastfoodmanager/Destroy() + return ..() + +// Feeder's Den - fanatic (GS13) + +/obj/effect/mob_spawn/human/feeders_den/fanatic + name = "Sleeper pod" + desc = "Through the red glass, you can see someone sleeping inside..." + mob_name = "Feeder Fanatic" + job_description = "Feeder Fanatic" + short_desc = "You are a member of a niche branch of Syndicate with... strange goals." + flavour_text = "After months of construction and gathering equipment, your den is finished - a monument to gluttony, equipped with every tool to turn any sharp body into a quivering mound of lard..." + important_info = "Keep your den in one piece and away from curious eyes! YOU AREN'T ALLOWED TO CAPTURE / FATTEN UP PEOPLE WHO DON'T DO NON-CON OR DIDN'T AGREE TO IT! Despite being able to leave the outpost, you do NOT have a permission to antag or grief. You're supposed to stay covert, not show yourself to the whole station!" + outfit = /datum/outfit/feeders_den/fanatic + faction = ROLE_SYNDICATE + assignedrole = "Space Agent" + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + death = FALSE + roundstart = FALSE + mob_species = /datum/species/human + +/datum/outfit/feeders_den/fanatic + name = "Feeder Fanatic" + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/vest + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/radio/headset/syndicate/alt + back = /obj/item/storage/backpack + l_hand = /obj/item/gun/energy/kinetic_accelerator/crossbow/feeder + l_pocket = /obj/item/crowbar + r_pocket = /obj/item/gun/energy/fatoray + id = /obj/item/card/id/syndicate/anyone + implants = list(/obj/item/implant/weapons_auth) + +/datum/outfit/feeders_den/fanatic/post_equip(mob/living/carbon/human/H) + H.faction |= ROLE_SYNDICATE + +/datum/outfit/feeders_den/fanatic/Destroy() + new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) + ..() + +/obj/effect/mob_spawn/human/feeders_den/fanatic/special(mob/living/carbon/human/new_spawn) + ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) + + +// Feeder's Den - victim (GS13) + + +/obj/effect/mob_spawn/human/feeders_den/victim + name = "Grease stained cryopod" + mob_name = "Syndicate Prisoner" + desc = "Through the grease-stained cryopod glass, you can see someone obese sleeping inside..." + job_description = "Den Victim" + short_desc = "You don't remember how you even got here." + flavour_text = "It's been a while since you've been stuck here. Each day passes by with non-stop feeding, lazing around and the pain of a stretched, creaking stomach... Is there any hope for you to get out of here before things get truly hopeless?" + important_info = "Keep your behaviour appropriate and fitting for your role, at least loosely." + outfit = /datum/outfit/feeders_den/victim + assignedrole = "Imprisoned victim" + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + death = FALSE + roundstart = FALSE + mob_species = /datum/species/human + +/datum/outfit/feeders_den/victim + name = "Den Victim" + uniform = /obj/item/clothing/under/misc/gear_harness + neck = /obj/item/electropack/shockcollar + +/datum/outfit/feeders_den/victim/Destroy() + new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) + ..() + +/obj/effect/mob_spawn/human/feeders_den/victim/special(mob/living/carbon/human/new_spawn) + ADD_TRAIT(new_spawn,TRAIT_EXEMPT_HEALTH_EVENTS,GHOSTROLE_TRAIT) + +/obj/effect/mob_spawn/proc/startfat(mob/M) //move this somewhere else later when we're cleaning up our content - GLDW + return + +//GS13 +/obj/machinery/cryopod/feederden //Pod for Feeder Den - not just for syndies, but for fatsos too + name = "subspace cryogenic sleeper" + desc = "A special mobility sleeper for storing agents in a disclosed location." + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s-open" + alert_comms = FALSE + +/obj/machinery/cryopod/feederden/open_machine() + ..() + icon_state = "sleeper_s-open" + +/obj/machinery/cryopod/feederden/close_machine(mob/user) + ..() + icon_state = "sleeper_s" + +/obj/machinery/cryopod/feederden/find_control_computer(urgent = FALSE) //We don't want to store anything + return + diff --git a/GainStation13/icons/obj/Cryogenic2.dmi b/GainStation13/icons/obj/Cryogenic2.dmi new file mode 100644 index 0000000000..4a97612874 Binary files /dev/null and b/GainStation13/icons/obj/Cryogenic2.dmi differ diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 59d292f4e6..8ad7df3997 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -319,7 +319,7 @@ GLOBAL_LIST_EMPTY(cryopod_computers) control_computer.frozen_crew += list(crew_member) // Make an announcement and log the person entering storage. - if(GLOB.announcement_systems.len) + if(GLOB.announcement_systems.len && alert_comms) //GS13 EDIT var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) announcer.announce("CRYOSTORAGE", mob_occupant.real_name, announce_rank, list()) diff --git a/tgstation.dme b/tgstation.dme index 1aff6add11..b6a86d04bc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3909,6 +3909,7 @@ #include "GainStation13\code\clothing\haydee_suit.dm" #include "GainStation13\code\clothing\head.dm" #include "GainStation13\code\clothing\suits.dm" +#include "GainStation13\code\datums\ruins.dm" #include "GainStation13\code\datums\components\fattening_door.dm" #include "GainStation13\code\datums\diseases\advance\symptoms\berry.dm" #include "GainStation13\code\datums\mutations\fatfang.dm" @@ -3931,6 +3932,7 @@ #include "GainStation13\code\game\turfs\open.dm" #include "GainStation13\code\machinery\adipoelectric_generator.dm" #include "GainStation13\code\machinery\adipoelectric_transformer.dm" +#include "GainStation13\code\machinery\cryogenic.dm" #include "GainStation13\code\machinery\fattening_turret.dm" #include "GainStation13\code\machinery\feeding_tube.dm" #include "GainStation13\code\machinery\gym.dm" @@ -3967,6 +3969,7 @@ #include "GainStation13\code\modules\hydroponics\munchies_weed.dm" #include "GainStation13\code\modules\hydroponics\grown\berries.dm" #include "GainStation13\code\modules\mapping\areas.dm" +#include "GainStation13\code\modules\mapping\ghost_roles.dm" #include "GainStation13\code\modules\mob\living\belly.dm" #include "GainStation13\code\modules\mob\living\emote.dm" #include "GainStation13\code\modules\mob\living\emote_modular.dm"