From 5331c4a61d5ce1ce14417c646d077486c7419136 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 1 Sep 2020 19:42:14 -0500 Subject: [PATCH] adds slave implant w/ basic functionality --- .../objects/items/implants/implant_slave.dm | 75 +++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 76 insertions(+) create mode 100644 code/game/objects/items/implants/implant_slave.dm diff --git a/code/game/objects/items/implants/implant_slave.dm b/code/game/objects/items/implants/implant_slave.dm new file mode 100644 index 00000000..901ec18c --- /dev/null +++ b/code/game/objects/items/implants/implant_slave.dm @@ -0,0 +1,75 @@ +/obj/item/implant/slave + name = "slave implant" + desc = "Turns you into security's new pet." + resistance_flags = INDESTRUCTIBLE + activated = 0 + +/obj/item/implant/slave/get_data() + var/dat = {"Implant Specifications:
+ Name: Alternative Criminal Reassignment Implant
+ Life: Ten years.
+ Important Notes: Personnel injected with this device are forced to be fully subservient to security personell. Incompatible with mindshield-class implants.
+
+ Implant Details:
+ Function: Overrides the host's mental functions with an innate desire to serve security personell, obeying nearly any command.
+ Special Features: Will cure, but not block most other forms of brainwashing.
+ Integrity: Implant will last so long as the implant remains within the host."} + return dat + + +/obj/item/implant/slave/implant(mob/living/target, mob/user, silent = FALSE) + if(..()) + if(!target.mind) + ADD_TRAIT(target, TRAIT_MINDSHIELD, "implant") + target.sec_hud_set_implants() + return TRUE + + if(target.mind.has_antag_datum(/datum/antagonist/brainwashed)) + target.mind.remove_antag_datum(/datum/antagonist/brainwashed) + + if(target.mind.has_antag_datum(/datum/antagonist/rev/head) || target.mind.unconvertable || target.mind.has_antag_datum(/datum/antagonist/gang/boss)) + if(!silent) + target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + var/obj/item/implanter/I = loc + removed(target, 1) + qdel(src) + if(istype(I)) + I.imp = null + I.update_icon() + return FALSE + + var/datum/antagonist/gang/gang = target.mind.has_antag_datum(/datum/antagonist/gang) + var/datum/antagonist/rev/rev = target.mind.has_antag_datum(/datum/antagonist/rev) + if(rev) + rev.remove_revolutionary(FALSE, user) + if(gang) + target.mind.remove_antag_datum(/datum/antagonist/gang) + if(!silent) + if(target.mind in SSticker.mode.cult) + to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") + else + to_chat(target, "You feel a sense of peace and security. You are now enslaved to security.") + brainwash(target, "Obey all of security's commands, and be the perfect pet.") + target.sec_hud_set_implants() + return TRUE + return FALSE + +/obj/item/implant/slave/removed(mob/target, silent = FALSE, special = 0) + if(..()) + if(isliving(target)) + var/mob/living/L = target + target.mind.remove_antag_datum(/datum/antagonist/brainwashed) + L.sec_hud_set_implants() + if(target.stat != DEAD && !silent) + to_chat(target, "Your mind suddenly feels free from burden. You are no longer enslaved to security.") + return 1 + return 0 + +/obj/item/implanter/slave + name = "implanter (slave)" + imp_type = /obj/item/implant/slave + +/obj/item/implantcase/slave + name = "implant case - 'Slave'" + desc = "A glass case containing a slave implant." + imp_type = /obj/item/implant/slave diff --git a/tgstation.dme b/tgstation.dme index 2f07e471..8e89617c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -922,6 +922,7 @@ #include "code\game\objects\items\implants\implant_krav_maga.dm" #include "code\game\objects\items\implants\implant_mindshield.dm" #include "code\game\objects\items\implants\implant_misc.dm" +#include "code\game\objects\items\implants\implant_slave.dm" #include "code\game\objects\items\implants\implant_spell.dm" #include "code\game\objects\items\implants\implant_stealth.dm" #include "code\game\objects\items\implants\implant_storage.dm"