Skip to content

Commit

Permalink
Buildmode & Supply Pod Ports (#2272)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Ports admin improvements/qol for tools from tgstation
### Buildmode stuff
- [x] tgstation/tgstation#52249
- [x] tgstation/tgstation#57457
- [x] tgstation/tgstation#58715
- [x] tgstation/tgstation#69428
- [x] tgstation/tgstation#76095
### Supply pod stuff
- [x] BeeStation/BeeStation-Hornet#3837

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
wa
<!-- Please add a short description of why you think these changes would
benefit the game. If you can't justify it in words, it might not be
worth adding. -->

## Changelog

:cl:
admin: Improved admin build mode menu and Drop pods from tgstation
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: Mark Suckerberg <[email protected]>
  • Loading branch information
thgvr and MarkSuckerberg authored Sep 13, 2023
1 parent e1f3bf2 commit 58b63d6
Show file tree
Hide file tree
Showing 51 changed files with 2,693 additions and 1,112 deletions.
4 changes: 2 additions & 2 deletions _maps/map_files/generic/CentCom.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@
"alS" = (
/obj/structure/fans/tiny/invisible,
/turf/open/floor/holofloor/hyperspace,
/area/centcom/supplypod/flyMeToTheMoon)
/area/centcom/supplypod/supplypod_temp_holding)
"alW" = (
/obj/structure/chair{
dir = 8
Expand Down Expand Up @@ -4244,7 +4244,7 @@
/area/centcom/ferry)
"aNE" = (
/turf/open/floor/plasteel,
/area/centcom/supplypod/podStorage)
/area/centcom/supplypod/pod_storage)
"aNF" = (
/obj/machinery/computer/communications{
dir = 1
Expand Down
2 changes: 1 addition & 1 deletion _maps/map_files/generic/blank.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"N" = (
/obj/structure/fans/tiny/invisible,
/turf/open/floor/holofloor/hyperspace,
/area/centcom/supplypod/flyMeToTheMoon)
/area/centcom/supplypod/supplypod_temp_holding)
"P" = (
/obj/structure/signpost/salvation{
icon = 'icons/obj/structures.dmi';
Expand Down
60 changes: 41 additions & 19 deletions code/__DEFINES/cargo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,45 @@
#define STYLE_GONDOLA 13
#define STYLE_SEETHROUGH 14

#define POD_ICON_STATE 1
#define POD_NAME 2
#define POD_DESC 3
#define POD_SHAPE 1
#define POD_BASE 2
#define POD_DOOR 3
#define POD_DECAL 4
#define POD_GLOW 5
#define POD_RUBBLE_TYPE 6
#define POD_NAME 7
#define POD_DESC 8

#define POD_STYLES list( \
list("supplypod", "supply pod", "A Nanotrasen supply drop pod."), \
list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."), \
list("centcompod", "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."), \
list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."), \
list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."), \
list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."), \
list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."), \
list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."), \
list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."), \
list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."), \
list("fruitpod", "\improper Orange", "An angry orange."), \
list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"), \
list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency."), \
list("", "", "") \
)
#define RUBBLE_NONE 1
#define RUBBLE_NORMAL 2
#define RUBBLE_WIDE 3
#define RUBBLE_THIN 4

#define POD_SHAPE_NORML 1
#define POD_SHAPE_OTHER 2

#define POD_TRANSIT "1"
#define POD_FALLING "2"
#define POD_OPENING "3"
#define POD_LEAVING "4"

#define SUPPLYPOD_X_OFFSET -16

GLOBAL_LIST_EMPTY(supplypod_loading_bays)

GLOBAL_LIST_INIT(podstyles, list(\
list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\
list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod", "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\
list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\
list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\
list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\
list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\
list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\
list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\
list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\
list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\
list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\
list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\
list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\
))
6 changes: 1 addition & 5 deletions code/__DEFINES/combat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,8 @@
#define SHOVE_SLOWDOWN_LENGTH 30
#define SHOVE_SLOWDOWN_STRENGTH 0.85 //multiplier
//Shove disarming item list
GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
/obj/item/gun)))


GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(/obj/item/gun)))
//Combat object defines

//Embedded objects
#define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user)
#define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object)
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,8 @@
#define COMSIG_TOOL_START_USE "tool_start_use" ///from base of [/obj/item/proc/tool_start_check]: (mob/living/user)
#define COMSIG_ITEM_DISABLE_EMBED "item_disable_embed" ///from [/obj/item/proc/disableEmbedding]:
#define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/effect/mine/proc/triggermine]:
///from [/obj/structure/closet/supplypod/proc/endlaunch]:
#define COMSIG_SUPPLYPOD_LANDED "supplypodgoboom"

///Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)]
#define COMSIG_ITEM_OFFERING "item_offering"
Expand Down
1 change: 0 additions & 1 deletion code/__DEFINES/flags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#define ALL (~0) //For convenience.
#define NONE 0


GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))

/* Directions */
Expand Down
4 changes: 4 additions & 0 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(

#define islandmine(A) (istype(A, /obj/effect/mine))

#define issupplypod(A) (istype(A, /obj/structure/closet/supplypod))

#define isammocasing(A) (istype(A, /obj/item/ammo_casing))

#define isidcard(I) (istype(I, /obj/item/card/id))
Expand Down Expand Up @@ -227,6 +229,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(

#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs))

#define isProbablyWallMounted(O) (O.pixel_x > 20 || O.pixel_x < -20 || O.pixel_y > 20 || O.pixel_y < -20)

#define isbook(O) (is_type_in_typecache(O, GLOB.book_types))

GLOBAL_LIST_INIT(book_types, typecacheof(list(
Expand Down
4 changes: 4 additions & 0 deletions code/__DEFINES/obj_flags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,7 @@
#define ORGAN_VITAL (1<<4) //Currently only the brain
#define ORGAN_EDIBLE (1<<5) //is a snack? :D
#define ORGAN_SYNTHETIC_EMP (1<<6) //Synthetic organ affected by an EMP. Deteriorates over time.

/// Flags for the pod_flags var on /obj/structure/closet/supplypod

#define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode
9 changes: 9 additions & 0 deletions code/__HELPERS/datums.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
///Check if a datum has not been deleted and is a valid source
/proc/is_valid_src(datum/source_datum)
if(istype(source_datum))
return !QDELETED(source_datum)
return FALSE

/proc/call_async(datum/source, proc_type, list/arguments)
set waitfor = FALSE
return call(source, proc_type)(arglist(arguments))
6 changes: 4 additions & 2 deletions code/datums/components/pellet_cloud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
var/mob/living/shooter

/datum/component/pellet_cloud/Initialize(projectile_type=/obj/item/shrapnel, magnitude=5)
if(!isammocasing(parent) && !isgrenade(parent) && !islandmine(parent))
if(!isammocasing(parent) && !isgrenade(parent) && !islandmine(parent) && !issupplypod(parent))
return COMPONENT_INCOMPATIBLE

if(magnitude < 1)
Expand All @@ -58,7 +58,7 @@

if(isammocasing(parent))
num_pellets = magnitude
else if(isgrenade(parent) || islandmine(parent))
else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent))
radius = magnitude

/datum/component/pellet_cloud/Destroy(force, silent)
Expand All @@ -77,6 +77,8 @@
RegisterSignal(parent, COMSIG_GRENADE_PRIME, .proc/create_blast_pellets)
else if(islandmine(parent))
RegisterSignal(parent, COMSIG_MINE_TRIGGERED, .proc/create_blast_pellets)
else if(issupplypod(parent))
RegisterSignal(parent, COMSIG_SUPPLYPOD_LANDED, .proc/create_blast_pellets)

/datum/component/pellet_cloud/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_PARENT_PREQDELETED, COMSIG_PELLET_CLOUD_INIT, COMSIG_GRENADE_PRIME, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_MINE_TRIGGERED, COMSIG_ITEM_DROPPED))
Expand Down
4 changes: 2 additions & 2 deletions code/datums/skills/_skill.dm
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,9 @@ GLOBAL_LIST_INIT(skill_types, subtypesof(/datum/skill))
to_chat(mind.current, "<span class='nicegreen'>It seems the Professional [title] Association won't send me another status symbol.</span>")
return
var/obj/structure/closet/supplypod/bluespacepod/pod = new()
pod.landingDelay = 150
pod.delays = list(POD_TRANSIT = 15, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30)
pod.explosionSize = list(0,0,0,0)
to_chat(mind.current, "<span class='nicegreen'>My legendary skill has attracted the attention of the Professional [title] Association. It seems they are sending me a status symbol to commemorate my abilities.</span>")
var/turf/T = get_turf(mind.current)
new /obj/effect/DPtarget(T, pod , new skill_cape_path(T))
new /obj/effect/pod_landingzone(T, pod , new skill_cape_path(T))
LAZYADD(mind.skills_rewarded, src.type)
19 changes: 17 additions & 2 deletions code/game/area/areas/centcom.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
/area/centcom/holding
name = "Holding Facility"

/area/centcom/supplypod/flyMeToTheMoon
/area/centcom/supplypod/supplypod_temp_holding
name = "Supplypod Shipping lane"
icon_state = "supplypod_flight"

Expand All @@ -37,28 +37,43 @@
icon_state = "supplypod"
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED

/area/centcom/supplypod/podStorage
/area/centcom/supplypod/pod_storage
name = "Supplypod Storage"
icon_state = "supplypod_holding"

/area/centcom/supplypod/loading
name = "Supplypod Loading Facility"
icon_state = "supplypod_loading"
var/loading_id = ""

/area/centcom/supplypod/loading/Initialize()
. = ..()
if(!loading_id)
CRASH("[type] created without a loading_id")
if(GLOB.supplypod_loading_bays[loading_id])
CRASH("Duplicate loading bay area: [type] ([loading_id])")
GLOB.supplypod_loading_bays[loading_id] = src

/area/centcom/supplypod/loading/one
name = "Bay #1"
loading_id = "1"

/area/centcom/supplypod/loading/two
name = "Bay #2"
loading_id = "2"

/area/centcom/supplypod/loading/three
name = "Bay #3"
loading_id = "3"

/area/centcom/supplypod/loading/four
name = "Bay #4"
loading_id = "4"

/area/centcom/supplypod/loading/ert
name = "ERT Bay"
loading_id = "5"

//THUNDERDOME

/area/tdome
Expand Down
16 changes: 16 additions & 0 deletions code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1651,3 +1651,19 @@
else
//We inline a MAPTEXT() here, because there's no good way to statically add to a string like this
active_hud.screentip_text.maptext = "<span class='maptext' style='text-align: center; font-size: 32px; color: [user.client.prefs.screentip_color]'>[name]</span>"

/*
* Used to set something as 'open' if it's being used as a supplypod
*
* Override this if you want an atom to be usable as a supplypod.
*/
/atom/proc/setOpened()
return

/*
* Used to set something as 'closed' if it's being used as a supplypod
*
* Override this if you want an atom to be usable as a supplypod.
*/
/atom/proc/setClosed()
return
2 changes: 1 addition & 1 deletion code/game/machinery/roulette_machine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@

new /obj/machinery/roulette(toLaunch)

new /obj/effect/DPtarget(drop_location(), toLaunch)
new /obj/effect/pod_landingzone(drop_location(), toLaunch)
qdel(src)

#undef ROULETTE_SINGLES_PAYOUT
Expand Down
4 changes: 0 additions & 4 deletions code/game/objects/effects/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@
density = TRUE
layer = FLY_LAYER

/obj/effect/supplypod_selector
icon_state = "supplypod_selector"
layer = FLY_LAYER

//Makes a tile fully lit no matter what
/obj/effect/fullbright
icon = 'icons/effects/alphacolors.dmi'
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/miscellaneous.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
msg = "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows: <span class='bold'>Item request received. Your package is inbound, please stand back from the landing site.</span> Message ends.\""
to_chat(M, msg)

new /obj/effect/DPtarget(get_turf(src), pod)
new /obj/effect/pod_landingzone(get_turf(src), pod)

/obj/item/choice_beacon/hero
name = "heroic beacon"
Expand Down
7 changes: 7 additions & 0 deletions code/game/objects/structures/crates_lockers/closets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@

/obj/structure/closet/update_icon()
. = ..()
if (istype(src, /obj/structure/closet/supplypod))
return

layer = opened ? BELOW_OBJ_LAYER : OBJ_LAYER

Expand Down Expand Up @@ -340,6 +342,11 @@
var/mob/living/L = O
if(!issilicon(L))
L.Paralyze(40)
if(istype(src, /obj/structure/closet/supplypod/extractionpod))
O.forceMove(src)
else
O.forceMove(T)
close()
O.forceMove(T)
close()
else
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -742,7 +742,7 @@
var/obj/structure/closet/supplypod/centcompod/pod = new()
var/atom/A = new chosen(pod)
A.flags_1 |= ADMIN_SPAWNED_1
new /obj/effect/DPtarget(T, pod)
new /obj/effect/pod_landingzone(T, pod)

log_admin("[key_name(usr)] pod-spawned [chosen] at [AREACOORD(usr)]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Podspawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1573,7 +1573,7 @@
R.activate_module(I)

if(pod)
new /obj/effect/DPtarget(target, pod)
new /obj/effect/pod_landingzone(target, pod)

if (number == 1)
log_admin("[key_name(usr)] created a [english_list(paths)]")
Expand Down
2 changes: 1 addition & 1 deletion code/modules/admin/verbs/randomverbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -935,7 +935,7 @@
alert("ERROR: Incorrect / improper path given.")
return
new delivery(pod)
new /obj/effect/DPtarget(get_turf(target), pod)
new /obj/effect/pod_landingzone(get_turf(target), pod)
if(ADMIN_PUNISHMENT_SUPPLYPOD)
var/datum/centcom_podlauncher/plaunch = new(usr)
if(!holder)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/antagonists/traitor/equipment/contractor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
to_chat(partner_mind.current, "\n<span class='alertwarning'>[user.real_name] is your superior. Follow any, and all orders given by them. You're here to support their mission only.</span>")
to_chat(partner_mind.current, "<span class='alertwarning'>Should they perish, or be otherwise unavailable, you're to assist other active agents in this mission area to the best of your ability.</span>\n\n")

new /obj/effect/DPtarget(free_location, arrival_pod)
new /obj/effect/pod_landingzone(free_location, arrival_pod)

/datum/contractor_item/blackout
name = "Blackout"
Expand Down
6 changes: 3 additions & 3 deletions code/modules/antagonists/traitor/syndicate_contract.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
empty_pod.explosionSize = list(0,0,0,1)
empty_pod.leavingSound = 'sound/effects/podwoosh.ogg'

new /obj/effect/DPtarget(empty_pod_turf, empty_pod)
new /obj/effect/pod_landingzone(empty_pod_turf, empty_pod)

/datum/syndicate_contract/proc/enter_check(datum/source, sent_mob)
if (istype(source, /obj/structure/closet/supplypod/extractionpod))
Expand Down Expand Up @@ -111,7 +111,7 @@
var/obj/structure/closet/supplypod/extractionpod/pod = source

// Handle the pod returning
pod.send_up(pod)
pod.startExitSequence(pod)

if (ishuman(M))
var/mob/living/carbon/human/target = M
Expand Down Expand Up @@ -226,7 +226,7 @@
M.Dizzy(35)
M.confused += 20

new /obj/effect/DPtarget(possible_drop_loc[pod_rand_loc], return_pod)
new /obj/effect/pod_landingzone(possible_drop_loc[pod_rand_loc], return_pod)
else
to_chat(M, "<span class='reallybig hypnophrase'>A million voices echo in your head... <i>\"Seems where you got sent here from won't \
be able to handle our pod... You will die here instead.\"</i></span>")
Expand Down
Loading

0 comments on commit 58b63d6

Please sign in to comment.