mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-12 00:20:55 +01:00
Merge pull request #424 from TotallyNotADog/slaveImplant
The Slutcurity Update. Powered by Horny™
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
/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 = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Alternative Criminal Reassignment Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device are forced to be fully subservient to security personnel. Incompatible with mindshield-class implants.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Overrides the host's mental functions with an innate desire to serve security personnel, obeying nearly any command.<BR>
|
||||
<b>Special Features:</b> Will cure, but not block most other forms of brainwashing.<BR>
|
||||
<b>Integrity:</b> 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
|
||||
Can't be a pet without having a mind! */
|
||||
|
||||
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) || target.mind.assigned_role == "Security Officer" || target.mind.assigned_role == "Detective" || target.mind.assigned_role == "Warden" || target.mind.assigned_role == "Head of Security")
|
||||
if(!silent)
|
||||
if(target.mind.assigned_role == "Security Officer" || target.mind.assigned_role == "Detective" || target.mind.assigned_role == "Warden" || target.mind.assigned_role == "Head of Security")
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant! You can't enslave a member of security!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
else
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
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, "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
else
|
||||
to_chat(target, "<span class='notice'>You feel a sense of peace and security. You are now enslaved!</span>")
|
||||
var/slave_objective = "[(target.client?.prefs.lewdchem?"Obey all of security's commands, and be the perfect pet.":"Obey all of security's commands.")]"
|
||||
brainwash(target, slave_objective)
|
||||
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, "<span class='boldnotice'>Your mind suddenly feels free from burden. You are no longer enslaved!</span>")
|
||||
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
|
||||
@@ -230,6 +230,35 @@
|
||||
new /obj/item/melee/baton/loaded(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/storage/belt/slut
|
||||
name = "slutcurity belt"
|
||||
desc = "Holds a variety of gear for \"alternative\" peacekeeping."
|
||||
icon_state = "slutbelt"
|
||||
item_state = "slut"
|
||||
|
||||
obj/item/storage/belt/slut/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_items = 5
|
||||
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/melee/baton,
|
||||
/obj/item/melee/classic_baton,
|
||||
/obj/item/grenade,
|
||||
/obj/item/reagent_containers/spray/pepper,
|
||||
/obj/item/restraints/handcuffs,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/reagent_containers/food/snacks/donut,
|
||||
/obj/item/flashlight/seclite,
|
||||
/obj/item/radio,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
/obj/item/dildo,
|
||||
/obj/item/leash,
|
||||
/obj/item/condom
|
||||
))
|
||||
|
||||
/obj/item/storage/belt/mining
|
||||
name = "explorer's webbing"
|
||||
desc = "A versatile chest rig, cherished by miners and hunters alike."
|
||||
|
||||
@@ -672,17 +672,26 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
damtype = "arousal"
|
||||
damtype = AROUSAL
|
||||
throwforce = 0
|
||||
force = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
|
||||
hitsound = 'sound/weapons/whip.ogg'
|
||||
|
||||
/obj/item/bdsm_whip/ridingcrop
|
||||
name = "riding crop"
|
||||
desc = "For teaching a lesson in a more compact fashion."
|
||||
icon_state = "ridingcrop"
|
||||
force = 10
|
||||
|
||||
/obj/item/bdsm_whip/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is getting just a little too kinky!</span>")
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/bdsm_whip/attack(mob/M, mob/user)
|
||||
playsound(loc, 'sound/weapons/whip.ogg', 30)
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
return ..(M, user)
|
||||
if(user.zone_selected == BODY_ZONE_PRECISE_GROIN)
|
||||
playsound(loc, 'sound/weapons/whip.ogg', 30)
|
||||
M.visible_message("<span class='userdanger'>[user] has [pick(attack_verb)] [M] on the ass!</span>")
|
||||
else
|
||||
return ..(M, user)
|
||||
|
||||
@@ -200,6 +200,12 @@
|
||||
. = ..()
|
||||
update_owner(M)
|
||||
|
||||
/obj/structure/bed/secbed
|
||||
name = "security pet bed"
|
||||
desc = "A comfy-looking pet bed, now in the classic security colors."
|
||||
icon_state = "secbed"
|
||||
anchored = FALSE
|
||||
|
||||
/obj/structure/bed/alien
|
||||
name = "resting contraption"
|
||||
desc = "This looks similar to contraptions from Earth. Could aliens be stealing our technology?"
|
||||
|
||||
Reference in New Issue
Block a user