From 40eb0992a89a398c17ed7f7f667465ee44ec5f20 Mon Sep 17 00:00:00 2001
From: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Date: Tue, 25 Aug 2020 01:33:03 +0200
Subject: [PATCH] [MIRROR] Adds the anti-teleportation implant to the game/the
space hotel (#511)
* Adds the anti-teleportation implant to the game/the space hotel (#52660)
* stay in the goddamn hotel
* Adds the anti-teleportation implant to the game/the space hotel
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
---
.../objects/items/implants/implant_exile.dm | 41 ++++++++++++++++++-
.../objects/structures/ghost_role_spawners.dm | 10 ++---
2 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/code/game/objects/items/implants/implant_exile.dm b/code/game/objects/items/implants/implant_exile.dm
index 9b682063389..3a1bf7f413e 100644
--- a/code/game/objects/items/implants/implant_exile.dm
+++ b/code/game/objects/items/implants/implant_exile.dm
@@ -4,19 +4,56 @@
/obj/item/implant/exile
name = "exile implant"
desc = "Prevents you from returning from away missions."
- activated = 0
+ activated = FALSE
/obj/item/implant/exile/get_data()
var/dat = {"Implant Specifications:
Name: Nanotrasen Employee Exile Implant
- Implant Details: The onboard gateway system has been modified to reject entry by individuals containing this implant
"}
+ Implant Details: The onboard gateway system has been modified to reject entry by individuals containing this implant.
"}
return dat
+
+///Used to help the staff of the space hotel resist the urge to use the space hotel's incredibly alluring roundstart teleporter to ignore their flavor/greeting text and come to the station.
+/obj/item/implant/exile/noteleport
+ name = "anti-teleportation implant"
+ desc = "Uses impressive bluespace grounding techniques to deny the person implanted by this implant the ability to teleport (or be teleported). Used by certain slavers (or particularly strict employers) to keep their slaves from using teleporters to escape their grasp."
+
+/obj/item/implant/exile/noteleport/get_data()
+ var/dat = {"Implant Specifications:
+ Name: Anti-Teleportation Implant
+ Implant Details: Keeps the implantee from using most teleportation devices. In addition, it spoofs the implant signature of an exile implant to keep the implantee from using certain gateway systems.
"}
+ return dat
+
+/obj/item/implant/exile/noteleport/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE)
+ . = ..()
+ if(!. || !isliving(target))
+ return FALSE
+ var/mob/living/living_target = target
+ ADD_TRAIT(living_target, TRAIT_NO_TELEPORT, "implant")
+ return TRUE
+
+/obj/item/implant/exile/noteleport/removed(mob/target, silent = FALSE, special = FALSE)
+ . = ..()
+ if(!. || !isliving(target))
+ return FALSE
+ var/mob/living/living_target = target
+ REMOVE_TRAIT(living_target, TRAIT_NO_TELEPORT, "implant")
+ return TRUE
+
/obj/item/implanter/exile
name = "implanter (exile)"
imp_type = /obj/item/implant/exile
+/obj/item/implanter/exile/noteleport
+ name = "implanter (anti-teleportation)"
+ imp_type = /obj/item/implant/exile/noteleport
+
/obj/item/implantcase/exile
name = "implant case - 'Exile'"
desc = "A glass case containing an exile implant."
imp_type = /obj/item/implant/exile
+
+/obj/item/implantcase/exile/noteleport
+ name = "implant case - 'Anti-Teleportation'"
+ desc = "A glass case containing an anti-teleportation implant."
+ imp_type = /obj/item/implant/exile/noteleport
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 17085337550..7b1c4ee5885 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -374,14 +374,14 @@
mob_name = "hotel staff member"
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper_s"
- objectives = "Cater to visiting guests with your fellow staff. Do not leave your assigned hotel and always remember: The customer is always right!"
+ objectives = "Cater to visiting guests with your fellow staff. Do not leave your assigned hotel. Remember, the customer is always right!"
death = FALSE
roundstart = FALSE
random = TRUE
outfit = /datum/outfit/hotelstaff
short_desc = "You are a staff member of a top-of-the-line space hotel!"
- flavour_text = "You are a staff member of a top-of-the-line space hotel! Cater to guests and make sure the manager doesn't fire you."
- important_info = "DON'T leave the hotel"
+ flavour_text = "You are a staff member of a top-of-the-line space hotel! Cater to guests, advertise the hotel, and make sure the manager doesn't fire you."
+ important_info = "Do NOT leave the hotel, as that is grounds for contract termination."
assignedrole = "Hotel Staff"
/datum/outfit/hotelstaff
@@ -390,7 +390,7 @@
shoes = /obj/item/clothing/shoes/laceup
r_pocket = /obj/item/radio/off
back = /obj/item/storage/backpack
- implants = list(/obj/item/implant/mindshield)
+ implants = list(/obj/item/implant/mindshield, /obj/item/implant/exile/noteleport)
/obj/effect/mob_spawn/human/hotel_staff/security
name = "hotel security sleeper"
@@ -400,7 +400,7 @@
flavour_text = "You have been assigned to this hotel to protect the interests of the company while keeping the peace between \
guests and the staff."
important_info = "Do NOT leave the hotel, as that is grounds for contract termination."
- objectives = "Do not leave your assigned hotel. Try and keep the peace between staff and guests, non-lethal force heavily advised if possible."
+ objectives = "Do not leave your assigned hotel. Try and keep the peace between staff and guests. Using non-lethal force instead of lethal force is heavily advised if possible."
/datum/outfit/hotelstaff/security
name = "Hotel Security"