Merge pull request #424 from TotallyNotADog/slaveImplant
The Slutcurity Update. Powered by Horny™
@@ -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?"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,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
|
||||
|
||||
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 528 B |
|
Before Width: | Height: | Size: 420 B After Width: | Height: | Size: 501 B |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 206 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 392 KiB After Width: | Height: | Size: 398 KiB |
|
Before Width: | Height: | Size: 400 KiB After Width: | Height: | Size: 405 KiB |
|
Before Width: | Height: | Size: 327 KiB After Width: | Height: | Size: 330 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 122 KiB |
|
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
|
||||
|
||||
|
Before Width: | Height: | Size: 347 B After Width: | Height: | Size: 449 B |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 404 KiB |
|
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 325 KiB |
|
Before Width: | Height: | Size: 1016 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 967 B After Width: | Height: | Size: 1.0 KiB |
@@ -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"
|
||||
|
||||