Merge pull request #424 from TotallyNotADog/slaveImplant

The Slutcurity Update. Powered by Horny™
This commit is contained in:
Dahlular
2020-09-05 19:15:08 -06:00
committed by GitHub
52 changed files with 373 additions and 18 deletions
@@ -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
+29
View File
@@ -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."
+13 -4
View File
@@ -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?"
+5
View File
@@ -249,6 +249,11 @@
desc = "A special beret with the security insignia emblazoned on it. For officers with class."
icon_state = "officerberet"
/obj/item/clothing/head/beret/sec/bitch
name = "security's bitch beret"
desc = "A softer beret with the word 'BITCH' embroidered on it in pink thread."
icon_state = "bitchberet"
//Curator
/obj/item/clothing/head/fedora/curator
name = "treasure hunter's fedora"
+63 -1
View File
@@ -38,10 +38,32 @@
aggressiveness = 1 //Borgs are nicecurity!
actions_types = list(/datum/action/item_action/halt)
/obj/item/clothing/mask/gas/sechailer/slut
name = "slutcurity hailer"
desc = "A modified Security gas mask designed for softer apprehension, now with a hot pink paintjob!"
icon_state = "sluthailer"
item_state = "sluthailer"
aggressiveness = 0 //can't have your pets being mean!
actions_types = list(/datum/action/item_action/halt)
/obj/item/clothing/mask/gas/sechailer/slut/attack_hand(mob/user)
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
to_chat(user, "<span class='warning'>The mask is fastened tight! You'll need help taking this off!</span>")
return
..()
/obj/item/clothing/mask/gas/sechailer/screwdriver_act(mob/living/user, obj/item/I)
if(..())
return TRUE
switch(aggressiveness)
if(-1)
to_chat(user, "<span class='notice'>You set the restrictor to the top position.</span>")
aggressiveness = 0
if(0)
to_chat(user, "<span class='notice'>You set the restrictor to the bottom position.</span>")
aggressiveness = -1
if(1)
to_chat(user, "<span class='notice'>You set the restrictor to the middle position.</span>")
aggressiveness = 2
@@ -109,6 +131,10 @@
return
switch(aggressiveness) // checks if the user has unlocked the restricted phrases
if(-1)
phrase = rand(25,29) // the mask will only play submissive 'slut cop' phrases
if(0)
phrase = rand(19,24) // the mask will only play dominant 'slut cop' phrases
if(1)
phrase = rand(1,5) // set the upper limit as the phrase above the first 'bad cop' phrase, the mask will only play 'nice' phrases
if(2)
@@ -178,8 +204,44 @@
if(18)
phrase_text = "I am, the LAW!"
phrase_sound = "dredd"
if(19) // slut cop - dom
phrase_text = "Your ass is mine!"
phrase_sound = "ass"
if(20) //Thank you Yappy for 19 & 20
phrase_text = "Your consent is forfeit."
phrase_sound = "consent"
if(21)
phrase_text = "Fuck my brains out, I dare you."
phrase_sound = "brains"
if(22)
phrase_text = "Hands up, pants down."
phrase_sound = "pants"
if(23)
phrase_text = "On your knees, and say please."
phrase_sound = "knees"
if(24) //Thank you Nata for 22-24
phrase_text = "Empty or not, I'm cumming for you!"
phrase_sound = "empty"
if(25) // slut cop - sub
phrase_text = "Please, I need more!"
phrase_sound = "please"
if(26)
phrase_text = "My body is yours."
phrase_sound = "body"
if(27)
phrase_text = "Am I a good pet?"
phrase_sound = "goodpet"
if(28)
phrase_text = "I am yours..."
phrase_sound = "yours"
if(29) //Thank you Kraxie for 28 & 29
phrase_text = "Master..."
phrase_sound = "master"
usr.audible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[phrase_text]</b></font>")
if(aggressiveness <= 0)
usr.audible_message("[usr]'s Compli-o-Nator: <font color=#D45592 size='2'><b>[phrase_text]</b></font>")
else
usr.audible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[phrase_text]</b></font>")
playsound(src.loc, "sound/voice/complionator/[phrase_sound].ogg", 100, 0, 4)
cooldown = world.time
cooldown_special = world.time
+9 -1
View File
@@ -9,7 +9,15 @@
equip_delay_other = 20
mutantrace_variation = MUTANTRACE_VARIATION
/obj/item/clothing/mask/muzzle/attack_paw(mob/user)
/obj/item/clothing/mask/muzzle/attack_hand(mob/user)
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
to_chat(user, "<span class='warning'>You need help taking this off!</span>")
return
..()
/obj/item/clothing/mask/muzzle/attack_paw(mob/user) //apparently this is for monkies only
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
+10
View File
@@ -267,6 +267,16 @@
hasprimary = TRUE
primary_color = "#222222"
/obj/item/clothing/neck/petcollar/locked/security
name = "security collar"
desc = "For when you need to show everyone who your pet belongs to."
icon_state = "seccollar"
item_state = "seccollar"
hasprimary = FALSE
hassecondary = FALSE
hastertiary = FALSE
/obj/item/key/collar
name = "Collar Key"
desc = "A key for a tiny lock on a collar or bag."
@@ -122,6 +122,12 @@
permeability_coefficient = 0.05 //Thick soles, and covers the ankle
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
/obj/item/clothing/shoes/jackboots/tall
name = "tall jackboots"
desc = "A pair of knee-high jackboots, complete with heels. All style, all the time."
icon_state = "jackboots-tall"
item_state = "jackboots-tall"
/obj/item/clothing/shoes/jackboots/fast
slowdown = -1
+14
View File
@@ -42,6 +42,20 @@
icon_state = "blueshift"
item_state = "blueshift"
/obj/item/clothing/suit/armor/vest/stripper
name = "stripper armor"
desc = "Talk about lightweight."
icon_state = "armorstripper"
item_state = "armorstripper"
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
dog_fashion = null
/obj/item/clothing/suit/armor/vest/stripper/bikini
name = "bikini armor"
desc = "How is this even supposed to work? It barely covers anything!"
icon_state = "armorstripperalt"
item_state = "armorstripperalt"
/obj/item/clothing/suit/armor/hos
name = "armored greatcoat"
desc = "A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence."
+10 -1
View File
@@ -573,6 +573,12 @@
armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
hoodtype = /obj/item/clothing/head/hooded/winterhood/security
/obj/item/clothing/suit/hooded/wintercoat/security/pink
name = "pink security winter coat"
icon_state = "coatsecuritypink"
item_state = "coatsecuritypink"
hoodtype = /obj/item/clothing/head/hooded/winterhood/security/pink
/obj/item/clothing/suit/hooded/wintercoat/security/Initialize()
. = ..()
allowed = GLOB.security_wintercoat_allowed
@@ -580,6 +586,9 @@
/obj/item/clothing/head/hooded/winterhood/security
icon_state = "winterhood_security"
/obj/item/clothing/head/hooded/winterhood/security/pink
icon_state = "winterhood_securitypink"
/obj/item/clothing/suit/hooded/wintercoat/hos
name = "head of security's winter coat"
icon_state = "coathos"
@@ -887,4 +896,4 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/durathread
icon_state = "winterhood_durathread"
icon_state = "winterhood_durathread"
@@ -24,6 +24,12 @@
icon_state = "security"
item_state = "gy_suit"
item_color = "security"
/obj/item/clothing/under/rank/security/pink
name = "pink security jumpsuit"
desc = "A tactical security jumpsuit for officers that screw up their laundry."
icon_state = "rsecuritypink"
item_state = "r_suit"
item_color = "rsecuritypink"
/obj/item/clothing/under/rank/security/skirt
name = "security jumpskirt"
desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt."
@@ -33,6 +39,26 @@
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE //you know now that i think of it if you adjust the skirt and the sprite disappears isn't that just like flashing everyone
fitted = FEMALE_UNIFORM_TOP
/obj/item/clothing/under/rank/security/skirt/slut
name = "slutty security jumpskirt"
desc = "A \"\"\"tactical\"\"\" security jumpsuit with the legs replaced by a skirt. No matter how you adjust it, it always feels a little too small."
icon_state = "secslutskirt"
item_state = "secslutskirt"
item_color = null //i dont understand what item_color even is, apparently setting it to null means it won't change color in a washing machine?
mutantrace_variation = NO_MUTANTRACE_VARIATION //look at the first two comments in vg_under.dm
/obj/item/clothing/under/rank/security/skirt/slut/pink
desc = "A \"\"\"tactical\"\"\" security jumpsuit with the legs replaced by a skirt. No matter how you adjust it, it always feels a little too small. This one seems to have an experimental color scheme."
icon_state = "secslutskirtpink"
item_state = "secslutskirtpink"
/obj/item/clothing/under/rank/security/stripper
name = "security stripper outfit"
desc = "This can't be dress code compliant, can it?"
icon_state = "secstripper"
item_state = "secstripper"
item_color = null
can_adjust = FALSE
body_parts_covered = CHEST|GROIN
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/rank/warden
+2 -1
View File
@@ -783,4 +783,5 @@
item_state = "corset"
body_parts_covered = CHEST|GROIN
can_adjust = FALSE
fitted = FEMALE_UNIFORM_TOP
fitted = FEMALE_UNIFORM_TOP
mutantrace_variation = NO_MUTANTRACE_VARIATION
+1 -1
View File
@@ -274,7 +274,7 @@
loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
/mob/living/carbon/is_muzzled()
return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle)||istype(src.wear_mask, /obj/item/clothing/mask/gas/sechailer/slut)) //i sure do love snowflake code
/mob/living/carbon/hallucinating()
if(hallucination)
@@ -522,6 +522,16 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
/datum/design/implant_slave
name = "Slave Implant Case"
desc = "A glass case containing an implant."
id = "implant_slave"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/implantcase/slave
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
//Cybernetic organs
/datum/design/cybernetic_liver
@@ -949,4 +959,4 @@
construction_time = 40
build_path = /obj/item/hypospray/mkii/disposable
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+1 -1
View File
@@ -518,7 +518,7 @@
display_name = "Subdermal Implants"
description = "Electronic implants buried beneath the skin."
prereq_ids = list("biotech", "datatheory")
design_ids = list("implanter", "implantcase", "implant_chem", "implant_tracking", "locator", "c38_trac")
design_ids = list("implanter", "implantcase", "implant_chem", "implant_tracking", "implant_slave", "locator", "c38_trac")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
+10 -1
View File
@@ -16,7 +16,16 @@
/obj/item/secbat = 5)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,
/obj/item/storage/fancy/donut_box = 2,
/obj/item/ssword_kit = 1)
/obj/item/ssword_kit = 1,
/obj/item/clothing/suit/armor/vest/stripper = 5,
/obj/item/clothing/suit/armor/vest/stripper/bikini = 5,
/obj/item/clothing/neck/petcollar/locked/security = 5,
/obj/item/electropack/shockcollar/security = 5,
/obj/item/storage/belt/slut = 5,
/obj/item/clothing/mask/gas/sechailer/slut = 5,
/obj/item/bdsm_whip/ridingcrop = 3,
/obj/structure/bed/secbed = 3,
/obj/item/dildo/flared/gigantic = 1)
premium = list(/obj/item/coin/antagtoken = 1,
/obj/item/clothing/head/helmet/blueshirt = 1,
/obj/item/clothing/suit/armor/vest/blueshirt = 1,
+9 -1
View File
@@ -21,7 +21,15 @@
/obj/item/clothing/under/pants/khaki = 5)
premium = list(/obj/item/clothing/under/rank/security/navyblue = 5,
/obj/item/clothing/suit/security/officer = 5,
/obj/item/clothing/head/beret/sec/navyofficer = 5)
/obj/item/clothing/head/beret/sec/navyofficer = 5,
/obj/item/clothing/under/rank/security/pink = 5,
/obj/item/clothing/suit/hooded/wintercoat/security/pink = 5,
/obj/item/clothing/under/rank/security/skirt/slut = 5,
/obj/item/clothing/under/rank/security/skirt/slut/pink = 5,
/obj/item/clothing/under/rank/security/stripper = 5,
/obj/item/clothing/shoes/jackboots/tall = 5,
/obj/item/clothing/head/beret/sec/bitch = 5,
/obj/item/clothing/gloves/latexsleeves/security = 5)
refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe
/obj/item/vending_refill/wardrobe/sec_wardrobe
+7 -1
View File
@@ -7,6 +7,12 @@
alternate_worn_icon = 'hyperstation/icons/mobs/gloves.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/gloves/latexsleeves/security
name = "security sleeves"
desc = "A pair of latex sleeves, with a band of red above the elbows denoting that the wearer is part of the security team."
icon_state = "latexsec"
item_state = "latexsec"
/obj/item/clothing/head/dominatrixcap
name = "dominatrix cap"
desc = "A sign of authority, over the body."
@@ -23,4 +29,4 @@
item_state = "highheels"
icon = 'hyperstation/icons/obj/clothing/shoes.dmi'
alternate_worn_icon = 'hyperstation/icons/mobs/feet.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
mutantrace_variation = NO_MUTANTRACE_VARIATION
Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 B

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 KiB

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 KiB

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 KiB

After

Width:  |  Height:  |  Size: 405 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 KiB

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

@@ -81,3 +81,9 @@
user << browse(dat, "window=radio")
onclose(user, "radio")
return
/obj/item/electropack/shockcollar/security
name = "security shock collar"
desc = "A reinforced security collar. It has two electrodes that press against the neck, for disobedient pets."
icon_state = "shockseccollar"
item_state = "shockseccollar"
@@ -111,7 +111,7 @@
obj/item/dildo/human
dildo_shape = "human"
name = "human dildo"
attack_verb = list("penetrated", "slapped", "inseminated")
attack_verb = list("penetrated", "slapped", "inseminated")
obj/item/dildo/plain
dildo_shape = "plain"
@@ -128,6 +128,12 @@ obj/item/dildo/flared/huge
desc = "THIS THING IS HUGE!"
dildo_size = 4
obj/item/dildo/flared/gigantic
name = "bitch breaker"
desc = "You can barely carry this thing! Meant for... \"advanced\" interrogation techniques."
dildo_size = 5
attack_verb = list("penetrated", "slapped", "gaped", "prolapsed", "inseminated", "destroyed", "broke", "demolished", "whacked")
obj/item/dildo/custom
name = "customizable dildo"
desc = "Thanks to significant advances in synthetic nanomaterials, this dildo is capable of taking on many different forms to fit the user's preferences! Pricy!"
@@ -162,3 +168,13 @@ obj/item/dildo/custom
user.adjust_eye_damage(15)
return MANUAL_SUICIDE
/obj/item/dildo/flared/gigantic/suicide_act(mob/living/user)
if(do_after(user,45,target=src))
user.visible_message("<span class='suicide'>[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!!</span>")
playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1)
user.Stun(400)
user.adjust_blurriness(24)
user.adjust_eye_damage(20)
user.adjustOxyLoss(15)
return MANUAL_SUICIDE
@@ -68,4 +68,32 @@
name = "Security Hud"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/pinksec
name = "Pink Security Jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/security/pink
cost = 1
restricted_roles = list("Security Officer","Warden","Head of Security")
/datum/gear/pinksecskirt
name = "Pink Security Jumpskirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/security/skirt/slut/pink
cost = 1
restricted_roles = list("Security Officer","Warden","Head of Security")
/datum/gear/secwintercoat
name = "Security Winter Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/security
cost = 1
restricted_roles = list("Security Officer","Warden","Head of Security")
/datum/gear/pinksecwintercoat
name = "Pink Security Winter Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/security/pink
cost = 1
restricted_roles = list("Security Officer","Warden","Head of Security")
@@ -23,6 +23,11 @@
category = SLOT_SHOES
path = /obj/item/clothing/shoes/jackboots/toeless
/datum/gear/jackboots/tall
name = "tall jackboots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/jackboots/tall
/datum/gear/winterboots
name = "Winter boots"
category = SLOT_SHOES
@@ -86,4 +91,4 @@
datum/gear/highheels
name = "High Heels"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/highheels
path= /obj/item/clothing/shoes/highheels
@@ -422,4 +422,4 @@
name = "Corset"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/corset
cost = 1
cost = 1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1016 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 967 B

After

Width:  |  Height:  |  Size: 1.0 KiB

+1
View File
@@ -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"