This commit is contained in:
Ghommie
2019-05-21 22:48:59 +02:00
121 changed files with 3102 additions and 803 deletions
+36
View File
@@ -150,6 +150,42 @@
message_admins("[key_name_admin(src)] set the round end sound to [S]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Set Round End Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/play_web_sound_manual()
set category = "Fun"
set name = "Manual Play Internet Sound"
if(!check_rights(R_SOUNDS))
return
var/web_sound_input = input("Enter youtube-dl fetched content URL (supported sites only, leave blank to stop playing)", "Send youtube-dl media link") as text|null
if(!istext(web_sound_input))
return
web_sound_input = trim(web_sound_input)
if(!length(web_sound_input))
log_admin("[key_name(src)] stopped web sound")
message_admins("[key_name(src)] stopped web sound")
for(var/m in GLOB.player_list)
var/mob/M = m
var/client/C = M.client
if((C.prefs.toggles & SOUND_MIDI) && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded)
C.chatOutput.stopMusic()
return
var/freq = input(usr, "What frequency would you like the sound to play at?",, 1) as null|num
if(!freq)
return
if(web_sound_input && !findtext(web_sound_input, GLOB.is_http_protocol))
to_chat(src, "<span class='boldwarning'>BLOCKED: Content URL not using http(s) protocol</span>")
to_chat(src, "<span class='warning'>The media provider returned a content URL that isn't using the HTTP or HTTPS protocol</span>")
return
SSblackbox.record_feedback("nested tally", "played_url_manual", 1, list("[ckey]", "[web_sound_input]"))
log_admin("[key_name(src)] manually played web sound: [web_sound_input]")
message_admins("[key_name(src)] manually played web sound: <a href='web_sound_input'>HREF</a>")
for(var/m in GLOB.player_list)
var/mob/M = m
var/client/C = M.client
if((C.prefs.toggles & SOUND_MIDI) && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded)
C.chatOutput.sendMusic(web_sound_input, freq)
/client/proc/stop_sounds()
set category = "Debug"
set name = "Stop All Playing Sounds"
+4 -1
View File
@@ -1249,7 +1249,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
if(!check_rights(R_ADMIN) || !check_rights(R_FUN))
return
var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING)
var/list/punishment_list = list(ADMIN_PUNISHMENT_PIE, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING, ADMIN_PUNISHMENT_ROD)
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
@@ -1294,6 +1294,9 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
if(!puzzle_imprison(target))
to_chat(usr,"<span class='warning'>Imprisonment failed!</span>")
return
if(ADMIN_PUNISHMENT_PIE)
var/obj/item/reagent_containers/food/snacks/pie/cream/nostun/creamy = new(get_turf(target))
creamy.splat(target)
var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]."
message_admins(msg)
@@ -108,10 +108,20 @@
to_chat(loc, "<span class='warning'>Combat injection is still recharging.</span>")
return
var/mob/living/carbon/human/M = loc
M.adjustStaminaLoss(-75)
M.SetSleeping(0)
M.SetUnconscious(0)
M.SetStun(0)
M.SetKnockdown(0)
M.reagents.add_reagent("inaprovaline", 3)
M.reagents.add_reagent("synaptizine", 10)
M.reagents.add_reagent("stimulants", 10)
M.adjustStaminaLoss(-150)
M.stuttering = 0
M.updatehealth()
M.update_stamina()
M.resting = 0
M.lying = 0
M.update_canmove()
combat_cooldown = 0
START_PROCESSING(SSobj, src)
@@ -19,6 +19,14 @@
user.SetKnockdown(0)
user.reagents.add_reagent("changelingadrenaline", 10)
user.reagents.add_reagent("changelinghaste", 2) //For a really quick burst of speed
user.adjustStaminaLoss(-75)
user.reagents.add_reagent("inaprovaline", 3) //let's give another chance to dumb fucks who forget to breathe
user.adjustStaminaLoss(-150)
user.stuttering = 0
user.updatehealth()
user.update_stamina()
user.resting = 0
user.lying = 0
user.update_canmove()
return TRUE
@@ -13,7 +13,7 @@
if (user.has_trait(CHANGELING_HIVEMIND_MUTE))
to_chat(user, "<span class='warning'>The poison in the air hinders our ability to interact with the hivemind.</span>")
return
var/input = stripped_input(usr, "Please choose a message to transmit.", "Changeling Hivemind", "")
var/input = html_decode(stripped_input(usr, "Please choose a message to transmit.", "Changeling Hivemind", ""))
user.say(".g[input]")
/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec)
@@ -44,12 +44,13 @@
/obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and fabricator
clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture."
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard)
quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \
/datum/clockwork_scripture/create_object/stargazer)
maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more
actions_types = list()
/obj/item/clockwork/slab/cyborg/engineer //two scriptures, plus a fabricator
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission)
/obj/item/clockwork/slab/cyborg/engineer //three scriptures, plus a fabricator
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/stargazer)
/obj/item/clockwork/slab/cyborg/medical //five scriptures, plus a spear
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, \
@@ -61,12 +62,12 @@
/obj/item/clockwork/slab/cyborg/peacekeeper //two scriptures, plus a spear
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/hateful_manacles, /datum/clockwork_scripture/ranged_ability/judicial_marker)
/obj/item/clockwork/slab/cyborg/janitor //five scriptures, plus a fabricator
/obj/item/clockwork/slab/cyborg/janitor //six scriptures, plus a fabricator
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transgression, \
/datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
/datum/clockwork_scripture/create_object/stargazer, /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
/obj/item/clockwork/slab/cyborg/service //five scriptures, plus xray vision
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, \
/obj/item/clockwork/slab/cyborg/service //six scriptures, plus xray vision
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant,/datum/clockwork_scripture/create_object/stargazer, \
/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/clockwork_obelisk)
/obj/item/clockwork/slab/cyborg/miner //two scriptures, plus a spear and xray vision
@@ -2,6 +2,32 @@
// DRIVERS //
/////////////
//Stargazer: Creates a stargazer, a cheap power generator that utilizes starlight.
/datum/clockwork_scripture/create_object/stargazer
descname = "Generates Power From Starlight"
name = "Stargazer"
desc = "Forms a weak structure that generates power every second while within three tiles of starlight."
invocations = list("Capture their inferior light for us!")
channel_time = 50
power_cost = 200
object_path = /obj/structure/destructible/clockwork/stargazer
creator_message = "<span class='brass'>You form a stargazer, which will generate power near starlight.</span>"
observer_message = "<span class='warning'>A large lantern-shaped machine forms!</span>"
usage_tip = "For obvious reasons, make sure to place this near a window or somewhere else that can see space!"
tier = SCRIPTURE_DRIVER
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 1
quickbind = TRUE
quickbind_desc = "Creates a stargazer, which generates power when near starlight."
/datum/clockwork_scripture/create_object/stargazer/check_special_requirements()
var/area/A = get_area(invoker)
if(A.outdoors || A.map_name == "Space" || !A.blob_allowed)
to_chat(invoker, "<span class='danger'>Stargazers can't be built off-station.</span>")
return
return ..()
//Integration Cog: Creates an integration cog that can be inserted into APCs to passively siphon power.
/datum/clockwork_scripture/create_object/integration_cog
@@ -18,7 +44,7 @@
tier = SCRIPTURE_DRIVER
space_allowed = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 1
sort_priority = 2
important = TRUE
quickbind = TRUE
quickbind_desc = "Creates an integration cog, which can be used to siphon power from an open APC."
@@ -39,7 +65,7 @@
tier = SCRIPTURE_DRIVER
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 2
sort_priority = 3
quickbind = TRUE
quickbind_desc = "Creates a Sigil of Transgression, which will briefly stun and slow the next non-Servant to cross it."
@@ -59,7 +85,7 @@
tier = SCRIPTURE_DRIVER
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 3
sort_priority = 4
quickbind = TRUE
quickbind_desc = "Creates a Sigil of Submission, which will convert non-Servants that remain on it."
@@ -76,7 +102,7 @@
usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration."
tier = SCRIPTURE_DRIVER
primary_component = BELLIGERENT_EYE
sort_priority = 4
sort_priority = 5
slab_overlay = "volt"
ranged_type = /obj/effect/proc_holder/slab/kindle
ranged_message = "<span class='brass'><i>You charge the clockwork slab with divine energy.</i>\n\
@@ -100,7 +126,7 @@
usage_tip = "The manacles are about as strong as zipties, and break when removed."
tier = SCRIPTURE_DRIVER
primary_component = BELLIGERENT_EYE
sort_priority = 5
sort_priority = 6
ranged_type = /obj/effect/proc_holder/slab/hateful_manacles
slab_overlay = "hateful_manacles"
ranged_message = "<span class='neovgre_small'><i>You charge the clockwork slab with divine energy.</i>\n\
@@ -124,7 +150,7 @@
usage_tip = "You cannot reactivate Vanguard while still shielded by it."
tier = SCRIPTURE_DRIVER
primary_component = VANGUARD_COGWHEEL
sort_priority = 6
sort_priority = 7
quickbind = TRUE
quickbind_desc = "Allows you to temporarily have quickly regenerating stamina and absorb stuns. All stuns absorbed will affect you when disabled."
@@ -156,7 +182,7 @@
usage_tip = "The Compromise is very fast to invoke, and will remove holy water from the target Servant."
tier = SCRIPTURE_DRIVER
primary_component = VANGUARD_COGWHEEL
sort_priority = 7
sort_priority = 8
quickbind = TRUE
quickbind_desc = "Allows you to convert a Servant's brute, burn, and oxygen damage to half toxin damage.<br><b>Click your slab to disable.</b>"
slab_overlay = "compromise"
@@ -180,7 +206,7 @@
usage_tip = "This can't be used while on Reebe, for obvious reasons."
tier = SCRIPTURE_DRIVER
primary_component = GEIS_CAPACITOR
sort_priority = 8
sort_priority = 9
important = TRUE
quickbind = TRUE
quickbind_desc = "Returns you to Reebe."
@@ -238,7 +264,7 @@
tier = SCRIPTURE_DRIVER
space_allowed = TRUE
primary_component = GEIS_CAPACITOR
sort_priority = 9
sort_priority = 10
important = TRUE
quickbind = TRUE
quickbind_desc = "Creates a new Clockwork Slab."
@@ -259,6 +285,6 @@
tier = SCRIPTURE_DRIVER
space_allowed = TRUE
primary_component = GEIS_CAPACITOR
sort_priority = 10
sort_priority = 11
quickbind = TRUE
quickbind_desc = "Creates a pair of Wraith Spectacles, which grant true sight but cause gradual vision loss."
@@ -0,0 +1,70 @@
#define STARGAZER_RANGE 3 //How many tiles the stargazer can see out to
#define STARGAZER_POWER 7 //How many watts will be produced per second when the stargazer sees starlight
//Stargazer: A very fragile but cheap generator that creates power from starlight.
/obj/structure/destructible/clockwork/stargazer
name = "stargazer"
desc = "A large lantern-shaped machine made of thin brass. It looks fragile."
clockwork_desc = "A lantern-shaped generator that produces power when near starlight."
icon_state = "stargazer"
unanchored_icon = "stargazer_unwrenched"
max_integrity = 40
construction_value = 5
layer = WALL_OBJ_LAYER
break_message = "<span class='warning'>The stargazer's fragile body shatters into pieces!</span>"
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
light_color = "#DAAA18"
var/star_light_star_bright = FALSE //If this stargazer can see starlight
/obj/structure/destructible/clockwork/stargazer/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/structure/destructible/clockwork/stargazer/Destroy()
STOP_PROCESSING(SSprocessing, src)
. = ..()
/obj/structure/destructible/clockwork/stargazer/examine(mob/user)
..()
if(is_servant_of_ratvar(user))
to_chat(user, "<span class='nzcrentr_small'>Generates <b>[DisplayPower(STARGAZER_POWER)]</b> per second while viewing starlight within [STARGAZER_RANGE] tiles.</span>")
if(star_light_star_bright)
to_chat(user, "[is_servant_of_ratvar(user) ? "<span class='nzcrentr_small'>It can see starlight!</span>" : "It's shining brilliantly!"]")
/obj/structure/destructible/clockwork/stargazer/process()
star_light_star_bright = check_starlight()
if(star_light_star_bright)
adjust_clockwork_power(STARGAZER_POWER)
/obj/structure/destructible/clockwork/stargazer/update_anchored(mob/living/user, damage)
. = ..()
star_light_star_bright = check_starlight()
/obj/structure/destructible/clockwork/stargazer/proc/check_starlight()
var/old_status = star_light_star_bright
var/has_starlight
if(!anchored)
has_starlight = FALSE
else
for(var/turf/T in view(3, src))
if(isspaceturf(T))
has_starlight = TRUE
break
if(has_starlight && anchored)
var/area/A = get_area(src)
if(A.outdoors || A.map_name == "Space" || !A.blob_allowed)
has_starlight = FALSE
if(old_status != has_starlight)
if(has_starlight)
visible_message("<span class='nzcrentr_small'>[src] hums and shines brilliantly!</span>")
playsound(src, 'sound/machines/clockcult/stargazer_activate.ogg', 50, TRUE)
add_overlay("stargazer_light")
set_light(1.5, 5)
else
if(anchored) //We lost visibility somehow
visible_message("<span class='danger'>[src] flickers, and falls dark.</span>")
else
visible_message("<span class='danger'>[src] whooshes quietly as it slides into a less bulky form.</span>")
cut_overlays()
set_light(0)
return has_starlight
+5 -5
View File
@@ -211,8 +211,6 @@
else
return FALSE
/datum/action/innate/cult/spin2win
name = "Geometer's Fury"
desc = "You draw on the power of the sword's ancient runes, spinning it wildly around you as you become immune to most attacks."
@@ -267,7 +265,6 @@
return
. = ..()
/obj/item/clothing/head/culthood
name = "ancient cultist hood"
icon_state = "culthood"
@@ -294,7 +291,6 @@
heat_protection = CHEST|GROIN|LEGS|ARMS
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
/obj/item/clothing/head/culthood/alt
name = "cultist hood"
desc = "An armored hood worn by the followers of Nar'Sie."
@@ -313,7 +309,6 @@
/obj/item/clothing/suit/cultrobes/alt/ghost
item_flags = NODROP | DROPDEL
/obj/item/clothing/head/magus
name = "magus helm"
icon_state = "magus"
@@ -529,7 +524,12 @@
"The shuttle's custodian was found washing the windows with their own blood.",
"A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh.",
"A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine.",
"An assistant was found on the shuttle.",
"A medical officer was found pouring out several blood bags onto the shuttle's instrument panels, before slitting both wrists open and screaming 'DEATH IS NOT THE END'.",
"A fuel technician was found replacing the fuel with his blood.",
"All the lights aboard the shuttle turned a crimson red before blowing out..",
"The shuttle dispatcher was found dead with bloody symbols carved into their flesh.",
"An engine turbine began leaking blood when it was powered on.",
"The shuttle's transponder is emitting the encoded message 'FEAR THE OLD BLOOD' in lieu of its assigned identification signal.")
var/message = pick_n_take(curses)
message += " The shuttle will be delayed by three minutes."
+19 -19
View File
@@ -58,18 +58,12 @@
<A href='byond://?src=[REF(src)];send=1'>Send Signal</A><BR>
<B>Frequency/Code</B> for signaler:<BR>
Frequency:
<A href='byond://?src=[REF(src)];freq=-10'>-</A>
<A href='byond://?src=[REF(src)];freq=-2'>-</A>
[format_frequency(src.frequency)]
<A href='byond://?src=[REF(src)];freq=2'>+</A>
<A href='byond://?src=[REF(src)];freq=10'>+</A><BR>
<A href='byond://?src=[REF(src)];set=freq'>Set</A><BR>
Code:
<A href='byond://?src=[REF(src)];code=-5'>-</A>
<A href='byond://?src=[REF(src)];code=-1'>-</A>
[src.code]
<A href='byond://?src=[REF(src)];code=1'>+</A>
<A href='byond://?src=[REF(src)];code=5'>+</A><BR>
<A href='byond://?src=[REF(src)];set=code'>Set</A><BR>
[t1]
</TT>"}
user << browse(dat, "window=radio")
@@ -85,17 +79,23 @@ Code:
onclose(usr, "radio")
return
if (href_list["freq"])
var/new_frequency = (frequency + text2num(href_list["freq"]))
if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ)
new_frequency = sanitize_frequency(new_frequency)
set_frequency(new_frequency)
if (href_list["set"])
if(href_list["code"])
src.code += text2num(href_list["code"])
src.code = round(src.code)
src.code = min(100, src.code)
src.code = max(1, src.code)
if(href_list["set"] == "freq")
var/new_freq = input(usr, "Input a new signalling frequency", "Remote Signaller Frequency", format_frequency(frequency)) as num|null
if(!usr.canUseTopic(src, BE_CLOSE))
return
new_freq = unformat_frequency(new_freq)
new_freq = sanitize_frequency(new_freq, TRUE)
set_frequency(new_freq)
if(href_list["set"] == "code")
var/new_code = input(usr, "Input a new signalling code", "Remote Signaller Code", code) as num|null
if(!usr.canUseTopic(src, BE_CLOSE))
return
new_code = round(new_code)
new_code = CLAMP(new_code, 1, 100)
code = new_code
if(href_list["send"])
spawn( 0 )
@@ -206,4 +206,4 @@ Code:
/obj/item/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params)
return
/obj/item/assembly/signaler/cyborg/screwdriver_act(mob/living/user, obj/item/I)
return
return
+59 -1
View File
@@ -177,9 +177,12 @@
/obj/item/clothing/neck/petcollar
name = "pet collar"
desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule."
desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule. It seems to be made out of a polychromic material."
icon_state = "petcollar"
item_color = "petcollar"
alternate_worn_icon = 'icons/mob/neck.dmi' //Because, as it appears, the item itself is normally not directly aware of its worn overlays, so this is about the easiest way, without adding a new var.
hasprimary = TRUE
primary_color = "#00BBBB"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar
var/tagname = null
@@ -187,6 +190,42 @@
tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN)
name = "[initial(name)] - [tagname]"
/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file)
. = ..()
if(hasprimary | hassecondary | hastertiary)
if(!isinhands) //prevents the worn sprites from showing up if you're just holding them
if(hasprimary) //checks if overlays are enabled
var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection
primary_worn.color = primary_color //colors the overlay
. += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite
if(hassecondary)
var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary")
secondary_worn.color = secondary_color
. += secondary_worn
if(hastertiary)
var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary")
tertiary_worn.color = tertiary_color
. += tertiary_worn
/obj/item/clothing/neck/petcollar/leather
name = "leather pet collar"
icon_state = "leathercollar"
item_color = "leathercollar"
hasprimary = TRUE
hassecondary = TRUE
primary_color = "#222222"
secondary_color = "#888888"
/obj/item/clothing/neck/petcollar/choker
desc = "Quite fashionable... if you're somebody who's just read their first BDSM-themed erotica novel."
name = "choker"
icon_state = "choker"
item_color = "choker"
hasprimary = TRUE
primary_color = "#222222"
/obj/item/clothing/neck/petcollar/locked
name = "locked collar"
desc = "A collar that has a small lock on it to keep it from being removed."
@@ -209,6 +248,25 @@
return
..()
/obj/item/clothing/neck/petcollar/locked/leather
name = "leather pet collar"
icon_state = "leathercollar"
item_color = "leathercollar"
hasprimary = TRUE
hassecondary = TRUE
primary_color = "#222222"
secondary_color = "#888888"
/obj/item/clothing/neck/petcollar/locked/choker
name = "choker"
desc = "Quite fashionable... if you're somebody who's just read their first BDSM-themed erotica novel."
icon_state = "choker"
item_color = "choker"
hasprimary = TRUE
primary_color = "#222222"
/obj/item/key/collar
name = "Collar Key"
desc = "A key for a tiny lock on a collar or bag."
-6
View File
@@ -41,12 +41,6 @@
if(tauric == TRUE)
center = TRUE
dimension_x = 64
/*
else if(H.dna.features["taur"] == "Horse" || "Cow")
taurmode = HOOF_TAURIC //tweak this for when the exotics get their own suits, if ever.
center = TRUE
dimension_x = 64
*/
else
taurmode = NOT_TAURIC
if(tauric == TRUE)
-1
View File
@@ -23,7 +23,6 @@
item_state = "armoralt"
blood_overlay_type = "armor"
dog_fashion = /datum/dog_fashion/back
tauric = TRUE //Citadel Add for tauric hardsuits
/obj/item/clothing/suit/armor/vest/alt
desc = "A Type I armored vest that provides decent protection against most types of damage."
+1
View File
@@ -28,6 +28,7 @@
CAT_PIZZA,
CAT_SALAD,
CAT_SANDWICH,
CAT_SUSHI,
CAT_SOUP,
CAT_SPAGHETTI),
CAT_CLOTHING) //Clothing subcategories
+20 -1
View File
@@ -435,6 +435,15 @@
result = /obj/item/extendohand
category = CAT_MISC
/datum/crafting_recipe/bluespacehonker
name = "Bluespace Bike horn"
result = /obj/item/bikehorn/bluespacehonker
time = 10
reqs = list(/obj/item/stack/ore/bluespace_crystal = 1,
/obj/item/toy/crayon/blue = 1,
/obj/item/bikehorn = 1)
category = CAT_MISC
/datum/crafting_recipe/chemical_payload
name = "Chemical Payload (C4)"
result = /obj/item/bombcore/chemical
@@ -686,6 +695,16 @@
reqs = list(/obj/item/bedsheet = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/briefcase
name = "Hand made Briefcase"
result = /obj/item/storage/briefcase/crafted
time = 35
tools = list(TOOL_WIRECUTTER)
reqs = list(/obj/item/stack/sheet/cardboard = 1,
/obj/item/stack/sheet/cloth = 2,
/obj/item/stack/sheet/leather = 5)
category = CAT_CLOTHING
/datum/crafting_recipe/aitater
name = "intelliTater"
result = /obj/item/aicard/aitater
@@ -706,7 +725,7 @@
name = "Improvised Jetpack"
result = /obj/item/tank/jetpack/improvised
time = 30
reqs = list(/obj/item/tank/internals/oxygen/red = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = 30)//red oxygen tank so it looks right
reqs = list(/obj/item/tank/internals/oxygen = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = 30)//red oxygen tank so it looks right
category = CAT_MISC
tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER)
+15 -4
View File
@@ -47,7 +47,16 @@
"hair_dye",
"sugar",
"white_glitter",
"growthserum"
"growthserum",
"cornoil",
"uranium",
"carpet",
"firefighting_foam",
"semen",
"femcum",
"tearjuice",
"strange_reagent"
)
//needs to be chemid unit checked at some point
@@ -58,8 +67,10 @@
endWhen = rand(120, 180)
for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines)
var/turf/T = get_turf(temp_vent)
if(T && is_station_level(T.z) && !temp_vent.welded)
var/area/A = T.loc
if(T && is_station_level(T.z) && !temp_vent.welded && !A.safe)
vents += temp_vent
if(!vents.len)
return kill()
@@ -87,8 +98,8 @@
else
R.add_reagent(pick(saferChems), reagentsAmount)
var/datum/effect_system/smoke_spread/chem/C = new
C.set_up(R,16,T,TRUE)
var/datum/effect_system/smoke_spread/chem/smoke_machine/C = new
C.set_up(R,16,1,T)
C.start()
playsound(T, 'sound/effects/smoke.ogg', 50, 1, -3)
@@ -25,7 +25,9 @@
"green" = COLOR_ASSEMBLY_GREEN,
"light blue" = COLOR_ASSEMBLY_LBLUE,
"blue" = COLOR_ASSEMBLY_BLUE,
"purple" = COLOR_ASSEMBLY_PURPLE
"purple" = COLOR_ASSEMBLY_PURPLE,
"pink" = COLOR_ASSEMBLY_PINK,
"custom" = COLOR_ASSEMBLY_WHITE
)
/obj/item/integrated_electronics/detailer/Initialize()
@@ -43,6 +45,9 @@
if(!color_list[color_choice])
return
if(!in_range(src, user))
return
detail_color = color_list[color_choice]
return
if(color_choice == "custom")
detail_color = input(user,"","Choose Color",detail_color) as color|null
else
detail_color = color_list[color_choice]
update_icon()
@@ -756,7 +756,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(!forced_colour)
switch(S.color_src)
if(SKINTONE)
accessory_overlay.color = skintone2hex(H.skin_tone)
accessory_overlay.color = "#[skintone2hex(H.skin_tone)]"
if(MUTCOLORS)
if(fixed_mut_color)
accessory_overlay.color = "#[fixed_mut_color]"
@@ -1451,7 +1451,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
target.forcesay(GLOB.hit_appends)
/datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
// CITADEL EDIT slap mouthy gits
// CITADEL EDIT slap mouthy gits and booty
var/aim_for_mouth = user.zone_selected == "mouth"
var/target_on_help_and_unarmed = target.a_intent == INTENT_HELP && !target.get_active_held_item()
var/target_aiming_for_mouth = target.zone_selected == "mouth"
@@ -1461,7 +1461,22 @@ GLOBAL_LIST_EMPTY(roundstart_races)
user.visible_message("<span class='danger'>[user] slaps [target] in the face!</span>",
"<span class='notice'>You slap [target] in the face! </span>",\
"You hear a slap.")
stop_wagging_tail(target)
if (!target.has_trait(TRAIT_NYMPHO))
stop_wagging_tail(target)
return FALSE
var/aim_for_groin = user.zone_selected == "groin"
var/target_aiming_for_groin = target.zone_selected == "groin"
if(aim_for_groin && (target_on_help_and_unarmed || target_restrained || target_aiming_for_groin))
playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
user.visible_message("<span class='danger'>[user] slaps [target]'s ass!</span>",
"<span class='notice'>You slap [target]'s ass! </span>",\
"You hear a slap.")
if (target.canbearoused)
target.adjustArousalLoss(5)
if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna())
target.mob_climax(forced_climax=TRUE)
if (!target.has_trait(TRAIT_NYMPHO))
stop_wagging_tail(target)
return FALSE
else if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)
to_chat(user, "<span class='warning'>You're too exhausted.</span>")
@@ -3,7 +3,7 @@
id = "abductor"
say_mod = "gibbers"
sexes = FALSE
species_traits = list(NOBLOOD,NOEYES)
species_traits = list(NOBLOOD,NOEYES,NOGENITALS)
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH)
mutanttongue = /obj/item/organ/tongue/abductor
var/scientist = FALSE // vars to not pollute spieces list with castes
@@ -2,7 +2,7 @@
name = "Android"
id = "android"
say_mod = "states"
species_traits = list(NOBLOOD)
species_traits = list(NOBLOOD,NOGENITALS)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
meat = null
@@ -15,6 +15,6 @@
attack_sound = 'sound/weapons/resonator_blast.ogg'
blacklisted = 1
use_skintones = 0
species_traits = list(NOBLOOD,EYECOLOR)
species_traits = list(NOBLOOD,EYECOLOR,NOGENITALS)
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER)
sexes = 0
@@ -2,7 +2,7 @@
// Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck.
name = "Golem"
id = "iron golem"
species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR)
species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR,NOGENITALS)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER)
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
mutant_organs = list(/obj/item/organ/adamantine_resonator)
@@ -9,7 +9,7 @@
nojumpsuit = TRUE
say_mod = "poofs" //what does a mushroom sound like
species_traits = list(MUTCOLORS, NOEYES, NO_UNDERWEAR)
species_traits = list(MUTCOLORS, NOEYES, NO_UNDERWEAR,NOGENITALS)
inherent_traits = list(TRAIT_NOBREATH)
speedmod = 1.5 //faster than golems but not by much
@@ -4,7 +4,7 @@
say_mod = "rattles"
sexes = 0
meat = /obj/item/stack/sheet/mineral/plasma
species_traits = list(NOBLOOD,NOTRANSSTING)
species_traits = list(NOBLOOD,NOTRANSSTING,NOGENITALS)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_NOHUNGER)
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
mutantlungs = /obj/item/organ/lungs/plasmaman
@@ -12,6 +12,11 @@
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant
disliked_food = MEAT | DAIRY
liked_food = VEGETABLES | FRUIT | GRAIN
var/light_nutrition_gain_factor = 10
var/light_toxheal = 1
var/light_oxyheal = 1
var/light_burnheal = 1
var/light_bruteheal = 1
/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
@@ -30,13 +35,13 @@
if(isturf(H.loc)) //else, there's considered to be no light
var/turf/T = H.loc
light_amount = min(1,T.get_lumcount()) - 0.5
H.nutrition += light_amount * 10
H.nutrition += light_amount * light_nutrition_gain_factor
if(H.nutrition > NUTRITION_LEVEL_FULL)
H.nutrition = NUTRITION_LEVEL_FULL
if(light_amount > 0.2) //if there's enough light, heal
H.heal_overall_damage(1,1)
H.adjustToxLoss(-1)
H.adjustOxyLoss(-1)
H.heal_overall_damage(light_bruteheal, light_burnheal)
H.adjustToxLoss(-light_toxheal)
H.adjustOxyLoss(-light_oxyheal)
if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
H.take_overall_damage(2,0)
@@ -64,3 +69,11 @@
H.show_message("<span class='userdanger'>The radiation beam singes you!</span>")
if(/obj/item/projectile/energy/florayield)
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
/datum/species/pod/pseudo_weak
id = "podweak"
limbs_id = "pod"
light_nutrition_gain_factor = 7.5
light_bruteheal = 0.2
light_burnheal = 0.2
light_toxheal = 0.7
@@ -38,7 +38,7 @@
burnmod = 1.5
blacklisted = TRUE
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYES)
species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYES,NOGENITALS)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER)
mutanteyes = /obj/item/organ/eyes/night_vision/nightmare
mutant_organs = list(/obj/item/organ/heart/nightmare)
@@ -6,7 +6,7 @@
blacklisted = 1
sexes = 0
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
species_traits = list(NOBLOOD)
species_traits = list(NOBLOOD,NOGENITALS)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH)
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
mutanttongue = /obj/item/organ/tongue/bone
@@ -3,7 +3,7 @@
id = "synth"
say_mod = "beep boops" //inherited from a user's real species
sexes = 0
species_traits = list(NOTRANSSTING) //all of these + whatever we inherit from the real species
species_traits = list(NOTRANSSTING,NOGENITALS) //all of these + whatever we inherit from the real species
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
dangerous_existence = 1
@@ -102,20 +102,19 @@
set category = "Object"
set src in oview(1)
var/datum/belly/B = vore_organs[vore_selected]
if(faction != usr.faction)
to_chat(usr,"<span class='warning'>This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.</span>")
return
if(B.digest_mode == "Hold")
var/mob/living/carbon/human/user = usr
if(!istype(user) || user.stat) return
if(vore_selected.digest_mode == DM_HOLD)
var/confirm = alert(usr, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will disable itself after 20 minutes.", "Enabling [name]'s Digestion", "Enable", "Cancel")
if(confirm == "Enable")
B.digest_mode = "Digest"
sleep(20 MINUTES) //12000=20 minutes
B.digest_mode = "Hold"
vore_selected.digest_mode = DM_DIGEST
sleep(20 MINUTES)
vore_selected.digest_mode = vore_default_mode
else
var/confirm = alert(usr, "This mob is currently set to digest all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", "Disable", "Cancel")
if(confirm == "Disable")
B.digest_mode = "Hold"
vore_selected.digest_mode = DM_HOLD
//
// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs.
@@ -4,12 +4,25 @@
if(!ninjacost(0,N_ADRENALINE))
var/mob/living/carbon/human/H = affecting
H.SetUnconscious(0)
H.SetSleeping(0)
H.SetStun(0)
H.SetKnockdown(0)
H.adjustStaminaLoss(-75)
H.SetUnconscious(0)
H.adjustStaminaLoss(-150)
H.stuttering = 0
H.updatehealth()
H.update_stamina()
H.resting = 0
H.lying = 0
H.update_canmove()
H.reagents.add_reagent("inaprovaline", 3) //let's give another chance to dumb fucks who forget to breathe
H.reagents.add_reagent("synaptizine", 10)
H.reagents.add_reagent("omnizine", 10)
H.reagents.add_reagent("stimulants", 10)
H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost")
a_boost--
to_chat(H, "<span class='notice'>There are <B>[a_boost]</B> adrenaline boosts remaining.</span>")
s_coold = 3
@@ -299,4 +299,8 @@
ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
item_state = "gravity_gun"
icon_state = "gravity_gun"
pin = null
var/power = 4
/obj/item/gun/energy/gravity_gun/security
pin = /obj/item/firing_pin
+2 -2
View File
@@ -269,11 +269,11 @@
if(C.reagent_check(R) != 1)
if(can_overdose)
if(R.overdose_threshold)
if(R.volume >= R.overdose_threshold && !R.overdosed)
if(R.volume > R.overdose_threshold && !R.overdosed)
R.overdosed = 1
need_mob_update += R.overdose_start(C)
if(R.addiction_threshold)
if(R.volume >= R.addiction_threshold && !is_type_in_list(R, cached_addictions))
if(R.volume > R.addiction_threshold && !is_type_in_list(R, cached_addictions))
var/datum/reagent/new_reagent = new R.type()
cached_addictions.Add(new_reagent)
if(R.overdosed)
@@ -304,13 +304,14 @@
reagent_state = SOLID
color = "#000067" // rgb: 0, 0, 103
toxpwr = 0
metabolization_rate = 1.5 * REAGENTS_METABOLISM
metabolization_rate = 1 * REAGENTS_METABOLISM
/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/carbon/M)
switch(current_cycle)
if(10 to 20)
M.confused += 1
M.drowsyness += 1
M.adjustStaminaLoss(7.5)
if(20 to INFINITY)
M.Sleeping(40, 0)
..()
+69
View File
@@ -0,0 +1,69 @@
/obj/item/nutcracker
name = "nutcracker"
desc = "It seems quite oversized. You could probably even crush a watermelon with it."
icon = 'icons/obj/surgery.dmi'
icon_state = "nutcracker"
force = 10
flags_1 = CONDUCT_1
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("smashed", "beaten", "crushed")
/obj/item/nutcracker/proc/gib_head(mob/living/carbon/M)
var/obj/item/bodypart/head = M.get_bodypart("head")
if(!head)
return
var/turf/T = get_turf(M)
var/list/organs = M.getorganszone("head") + M.getorganszone("eyes") + M.getorganszone("mouth")
for(var/internal_organ in organs)
var/obj/item/organ/I = internal_organ
I.Remove(M)
I.forceMove(T)
head.drop_limb()
qdel(head)
new M.gib_type(T,1,M.get_static_viruses())
M.add_splatter_floor(T)
playsound(M, 'sound/effects/splat.ogg', 50, 1)
//It's a bit of a clusterfuck, but if someone wants, it can be easily repurposed to work on other limbs too.
/obj/item/nutcracker/attack(mob/living/carbon/M, mob/living/carbon/user)
. = ..()
var/target_zone = "head"
var/obj/item/bodypart/target_limb = M.get_bodypart(target_zone)
if(!get_turf(M))
return
if(!istype(M))
return
if(M == user) //just use the suicide verb instead
return
if(user.zone_selected != "head")
return
if(!target_limb)
to_chat(user, "<span class='notice'>[M] has no [parse_zone(target_zone)]!</span>")
return
if(!get_location_accessible(M, target_zone))
to_chat(user, "<span class='notice'>Expose [M]\s head before trying to crush it!</span>")
return
M.visible_message("<span class='warning'>[user] is trying to crush [M]\s head with \the [src]!</span>")
var/crush_time = max(0, 400 - target_limb.brute_dam*2)
if(do_mob(user, M, crush_time))
if(get_location_accessible(M, target_zone)) //Yes, two checks, before and after the timer. What if someone puts a helmet on the guy while you're crushing his head?
if(target_limb)//If he still has the head. In case you queue up a lot of these up at once or the guy loses the head while you're removing it.
M.visible_message("<span class='warning'>[M]\s head cracks like a watermelon, spilling everything inside, as it becomes an unrecognizable mess!</span>")
gib_head(M)
else
to_chat(user, "<span class='notice'>Expose [M]\s head before trying to crush it!</span>")
/obj/item/nutcracker/suicide_act(mob/living/carbon/user)
var/obj/item/bodypart/target_limb = user.get_bodypart("head")
if(target_limb) //I mean like... for example lings can be still alive without heads.
user.visible_message("<span class='suicide'>[user] is crushing [user.p_their()] own head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
if(do_after(user, 30))
gib_head(user)
else
return
return (BRUTELOSS)
+4
View File
@@ -113,6 +113,10 @@
if(owner)
to_chat(owner, "<span class ='userdanger'>Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!</span>")
/obj/item/organ/heart/cursed/Remove(mob/living/carbon/M, special = 0)
..()
M.remove_client_colour(/datum/client_colour/cursed_heart_blood)
/datum/action/item_action/organ_action/cursed_heart
name = "Pump your blood"
+7 -1
View File
@@ -988,6 +988,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/backpack/duffelbag/syndie/surgery
cost = 3
/datum/uplink_item/device_tools/nutcracker
name = "Nutcracker"
desc = "An oversized version of what you'd initially expect here. Big enough to crush skulls."
item = /obj/item/nutcracker
cost = 1
/datum/uplink_item/device_tools/surgerybag_adv
name = "Syndicate Surgery Duffel Bag"
desc = "The Syndicate surgery duffel bag is a toolkit containing all newest surgery tools, surgical drapes, \
@@ -1511,7 +1517,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 15
restricted_roles = list("Clown")
/datum/uplink_item/device_tools/honkpins //Idealy so they can place it into their own guns without needing cargo
/datum/uplink_item/device_tools/honkpins //Idealy so they can place it into their own guns without needing cargo
name = "Hilarious firing pin"
desc = "A single firing pin made for Clown agents, this firing pin makes any gun honk when fired if not a true clown! \
This firing pin also helps you fire the gun correctly. May the HonkMother HONK you agent."
+107 -107
View File
@@ -6,114 +6,114 @@
icon_deny = "clothes-deny"
product_slogans = "Dress for success!;Prepare to look swagalicious!;Look at all this free swag!;Why leave style up to fate? Use the ClothesMate!"
vend_reply = "Thank you for using the ClothesMate!"
products = list(/obj/item/clothing/head/that = 2,
/obj/item/clothing/head/fedora = 1,
/obj/item/clothing/glasses/monocle = 1,
/obj/item/clothing/suit/jacket = 2,
/obj/item/clothing/suit/jacket/puffer/vest = 2,
/obj/item/clothing/suit/jacket/puffer = 2,
/obj/item/clothing/under/suit_jacket/navy = 1,
/obj/item/clothing/under/suit_jacket/really_black = 1,
/obj/item/clothing/under/suit_jacket/burgundy = 1,
/obj/item/clothing/under/suit_jacket/charcoal = 1,
/obj/item/clothing/under/suit_jacket/white = 1,
/obj/item/clothing/under/kilt = 1,
/obj/item/clothing/under/overalls = 1,
/obj/item/clothing/under/sl_suit = 1,
/obj/item/clothing/under/pants/jeans = 3,
/obj/item/clothing/under/pants/classicjeans = 2,
/obj/item/clothing/under/pants/camo = 1,
/obj/item/clothing/under/pants/blackjeans = 2,
/obj/item/clothing/under/pants/khaki = 2,
/obj/item/clothing/under/pants/white = 2,
/obj/item/clothing/under/pants/red = 1,
/obj/item/clothing/under/pants/black = 2,
/obj/item/clothing/under/pants/tan = 2,
/obj/item/clothing/under/pants/track = 1,
/obj/item/clothing/suit/jacket/miljacket = 1,
/obj/item/clothing/neck/tie/blue = 1,
/obj/item/clothing/neck/tie/red = 1,
/obj/item/clothing/neck/tie/black = 1,
/obj/item/clothing/neck/tie/horrible = 1,
/obj/item/clothing/neck/scarf/pink = 1,
/obj/item/clothing/neck/scarf/red = 1,
/obj/item/clothing/neck/scarf/green = 1,
/obj/item/clothing/neck/scarf/darkblue = 1,
/obj/item/clothing/neck/scarf/purple = 1,
/obj/item/clothing/neck/scarf/yellow = 1,
/obj/item/clothing/neck/scarf/orange = 1,
/obj/item/clothing/neck/scarf/cyan = 1,
/obj/item/clothing/neck/scarf = 1,
/obj/item/clothing/neck/scarf/black = 1,
/obj/item/clothing/neck/scarf/zebra = 1,
/obj/item/clothing/neck/scarf/christmas = 1,
/obj/item/clothing/neck/stripedredscarf = 1,
/obj/item/clothing/neck/stripedbluescarf = 1,
/obj/item/clothing/neck/stripedgreenscarf = 1,
/obj/item/clothing/accessory/waistcoat = 1,
/obj/item/clothing/under/skirt/black = 1,
/obj/item/clothing/under/skirt/blue = 1,
/obj/item/clothing/under/skirt/red = 1,
/obj/item/clothing/under/skirt/purple = 1,
/obj/item/clothing/under/sundress = 2,
/obj/item/clothing/under/stripeddress = 1,
/obj/item/clothing/under/sailordress = 1,
/obj/item/clothing/under/redeveninggown = 1,
/obj/item/clothing/under/blacktango = 1,
/obj/item/clothing/under/plaid_skirt = 1,
/obj/item/clothing/under/plaid_skirt/blue = 1,
/obj/item/clothing/under/plaid_skirt/purple = 1,
/obj/item/clothing/under/plaid_skirt/green = 1,
/obj/item/clothing/glasses/regular = 1,
/obj/item/clothing/glasses/regular/jamjar = 1,
/obj/item/clothing/head/sombrero = 1,
/obj/item/clothing/suit/poncho = 1,
/obj/item/clothing/suit/ianshirt = 1,
/obj/item/clothing/shoes/laceup = 2,
/obj/item/clothing/shoes/sneakers/black = 4,
/obj/item/clothing/shoes/sandal = 1,
/obj/item/clothing/gloves/fingerless = 2,
/obj/item/clothing/glasses/orange = 1,
/obj/item/clothing/glasses/red = 1,
/obj/item/storage/belt/fannypack = 1,
/obj/item/storage/belt/fannypack/blue = 1,
/obj/item/storage/belt/fannypack/red = 1,
/obj/item/clothing/suit/jacket/letterman = 2,
/obj/item/clothing/head/beanie = 1,
/obj/item/clothing/head/beanie/black = 1,
/obj/item/clothing/head/beanie/red = 1,
/obj/item/clothing/head/beanie/green = 1,
/obj/item/clothing/head/beanie/darkblue = 1,
/obj/item/clothing/head/beanie/purple = 1,
/obj/item/clothing/head/beanie/yellow = 1,
/obj/item/clothing/head/beanie/orange = 1,
/obj/item/clothing/head/beanie/cyan = 1,
/obj/item/clothing/head/beanie/christmas = 1,
/obj/item/clothing/head/beanie/striped = 1,
/obj/item/clothing/head/beanie/stripedred = 1,
/obj/item/clothing/head/beanie/stripedblue = 1,
/obj/item/clothing/head/beanie/stripedgreen = 1,
/obj/item/clothing/suit/jacket/letterman_red = 1,
products = list(/obj/item/clothing/head/that = 4,
/obj/item/clothing/head/fedora = 3,
/obj/item/clothing/glasses/monocle = 3,
/obj/item/clothing/suit/jacket = 4,
/obj/item/clothing/suit/jacket/puffer/vest = 4,
/obj/item/clothing/suit/jacket/puffer = 4,
/obj/item/clothing/under/suit_jacket/navy = 3,
/obj/item/clothing/under/suit_jacket/really_black = 3,
/obj/item/clothing/under/suit_jacket/burgundy = 3,
/obj/item/clothing/under/suit_jacket/charcoal = 3,
/obj/item/clothing/under/suit_jacket/white = 3,
/obj/item/clothing/under/kilt = 3,
/obj/item/clothing/under/overalls = 3,
/obj/item/clothing/under/sl_suit = 3,
/obj/item/clothing/under/pants/jeans = 5,
/obj/item/clothing/under/pants/classicjeans = 5,
/obj/item/clothing/under/pants/camo = 3,
/obj/item/clothing/under/pants/blackjeans = 5,
/obj/item/clothing/under/pants/khaki = 5,
/obj/item/clothing/under/pants/white = 5,
/obj/item/clothing/under/pants/red = 3,
/obj/item/clothing/under/pants/black = 4,
/obj/item/clothing/under/pants/tan = 4,
/obj/item/clothing/under/pants/track = 3,
/obj/item/clothing/suit/jacket/miljacket = 5,
/obj/item/clothing/neck/tie/blue = 3,
/obj/item/clothing/neck/tie/red = 3,
/obj/item/clothing/neck/tie/black = 3,
/obj/item/clothing/neck/tie/horrible = 5,
/obj/item/clothing/neck/scarf/pink = 3,
/obj/item/clothing/neck/scarf/red = 3,
/obj/item/clothing/neck/scarf/green = 3,
/obj/item/clothing/neck/scarf/darkblue = 3,
/obj/item/clothing/neck/scarf/purple = 3,
/obj/item/clothing/neck/scarf/yellow = 3,
/obj/item/clothing/neck/scarf/orange = 3,
/obj/item/clothing/neck/scarf/cyan = 3,
/obj/item/clothing/neck/scarf = 3,
/obj/item/clothing/neck/scarf/black = 3,
/obj/item/clothing/neck/scarf/zebra = 3,
/obj/item/clothing/neck/scarf/christmas = 3,
/obj/item/clothing/neck/stripedredscarf = 3,
/obj/item/clothing/neck/stripedbluescarf = 3,
/obj/item/clothing/neck/stripedgreenscarf = 3,
/obj/item/clothing/accessory/waistcoat = 2,
/obj/item/clothing/under/skirt/black = 3,
/obj/item/clothing/under/skirt/blue = 3,
/obj/item/clothing/under/skirt/red = 3,
/obj/item/clothing/under/skirt/purple = 3,
/obj/item/clothing/under/sundress = 4,
/obj/item/clothing/under/stripeddress = 3,
/obj/item/clothing/under/sailordress = 3,
/obj/item/clothing/under/redeveninggown = 3,
/obj/item/clothing/under/blacktango = 3,
/obj/item/clothing/under/plaid_skirt = 3,
/obj/item/clothing/under/plaid_skirt/blue = 3,
/obj/item/clothing/under/plaid_skirt/purple = 3,
/obj/item/clothing/under/plaid_skirt/green = 3,
/obj/item/clothing/glasses/regular = 2,
/obj/item/clothing/glasses/regular/jamjar = 2,
/obj/item/clothing/head/sombrero = 3,
/obj/item/clothing/suit/poncho = 3,
/obj/item/clothing/suit/ianshirt = 3,
/obj/item/clothing/shoes/laceup = 5,
/obj/item/clothing/shoes/sneakers/black = 6,
/obj/item/clothing/shoes/sandal = 3,
/obj/item/clothing/gloves/fingerless = 3,
/obj/item/clothing/glasses/orange = 5,
/obj/item/clothing/glasses/red = 5,
/obj/item/storage/belt/fannypack = 3,
/obj/item/storage/belt/fannypack/blue = 3,
/obj/item/storage/belt/fannypack/red = 3,
/obj/item/clothing/suit/jacket/letterman = 5,
/obj/item/clothing/head/beanie = 3,
/obj/item/clothing/head/beanie/black = 3,
/obj/item/clothing/head/beanie/red = 3,
/obj/item/clothing/head/beanie/green = 3,
/obj/item/clothing/head/beanie/darkblue = 3,
/obj/item/clothing/head/beanie/purple = 3,
/obj/item/clothing/head/beanie/yellow = 3,
/obj/item/clothing/head/beanie/orange = 3,
/obj/item/clothing/head/beanie/cyan = 3,
/obj/item/clothing/head/beanie/christmas = 3,
/obj/item/clothing/head/beanie/striped = 3,
/obj/item/clothing/head/beanie/stripedred = 3,
/obj/item/clothing/head/beanie/stripedblue = 3,
/obj/item/clothing/head/beanie/stripedgreen = 3,
/obj/item/clothing/suit/jacket/letterman_red = 3,
/obj/item/clothing/ears/headphones = 10,
/obj/item/clothing/suit/apron/purple_bartender = 2,
/obj/item/clothing/under/rank/bartender/purple = 2)
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 1,
/obj/item/clothing/mask/balaclava = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/under/soviet = 1,
/obj/item/storage/belt/fannypack/black = 2,
/obj/item/clothing/suit/jacket/letterman_syndie = 1,
/obj/item/clothing/under/jabroni = 1,
/obj/item/clothing/suit/vapeshirt = 1,
/obj/item/clothing/under/geisha = 1)
premium = list(/obj/item/clothing/under/suit_jacket/checkered = 1,
/obj/item/clothing/head/mailman = 1,
/obj/item/clothing/under/rank/mailman = 1,
/obj/item/clothing/suit/jacket/leather = 1,
/obj/item/clothing/suit/jacket/leather/overcoat = 1,
/obj/item/clothing/under/pants/mustangjeans = 1,
/obj/item/clothing/neck/necklace/dope = 3,
/obj/item/clothing/suit/jacket/letterman_nanotrasen = 1)
/obj/item/clothing/suit/apron/purple_bartender = 4,
/obj/item/clothing/under/rank/bartender/purple = 4)
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3,
/obj/item/clothing/mask/balaclava = 3,
/obj/item/clothing/head/ushanka = 3,
/obj/item/clothing/under/soviet = 3,
/obj/item/storage/belt/fannypack/black = 3,
/obj/item/clothing/suit/jacket/letterman_syndie = 5,
/obj/item/clothing/under/jabroni = 2,
/obj/item/clothing/suit/vapeshirt = 2,
/obj/item/clothing/under/geisha = 4)
premium = list(/obj/item/clothing/under/suit_jacket/checkered = 4,
/obj/item/clothing/head/mailman = 2,
/obj/item/clothing/under/rank/mailman = 2,
/obj/item/clothing/suit/jacket/leather = 4,
/obj/item/clothing/suit/jacket/leather/overcoat = 4,
/obj/item/clothing/under/pants/mustangjeans = 3,
/obj/item/clothing/neck/necklace/dope = 5,
/obj/item/clothing/suit/jacket/letterman_nanotrasen = 5)
refill_canister = /obj/item/vending_refill/clothing
/obj/item/vending_refill/clothing
+145 -145
View File
@@ -7,21 +7,21 @@
icon_state = "secdrobe"
product_ads = "Beat perps in style!;It's red so you can't see the blood!;You have the right to be fashionable!;Now you can be the fashion police you always wanted to be!"
vend_reply = "Thank you for using the SecDrobe!"
products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 1,
/obj/item/storage/backpack/security = 1,
/obj/item/storage/backpack/satchel/sec = 1,
/obj/item/storage/backpack/duffelbag/sec = 2,
/obj/item/clothing/under/rank/security = 3,
/obj/item/clothing/shoes/jackboots = 3,
/obj/item/clothing/head/beret/sec = 3,
/obj/item/clothing/head/soft/sec = 3,
/obj/item/clothing/mask/bandana/red = 3,
/obj/item/clothing/under/rank/security/skirt = 3,
/obj/item/clothing/under/rank/security/grey = 3,
/obj/item/clothing/under/pants/khaki = 3)
premium = list(/obj/item/clothing/under/rank/security/navyblue = 3,
/obj/item/clothing/suit/security/officer = 3,
/obj/item/clothing/head/beret/sec/navyofficer = 3)
products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 2,
/obj/item/storage/backpack/security = 2,
/obj/item/storage/backpack/satchel/sec = 2,
/obj/item/storage/backpack/duffelbag/sec = 3,
/obj/item/clothing/under/rank/security = 5,
/obj/item/clothing/shoes/jackboots = 5,
/obj/item/clothing/head/beret/sec =5,
/obj/item/clothing/head/soft/sec = 5,
/obj/item/clothing/mask/bandana/red = 5,
/obj/item/clothing/under/rank/security/skirt = 5,
/obj/item/clothing/under/rank/security/grey = 5,
/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)
refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe
/obj/item/vending_refill/wardrobe/sec_wardrobe
@@ -33,23 +33,23 @@
icon_state = "medidrobe"
product_ads = "Make those blood stains look fashionable!!"
vend_reply = "Thank you for using the MediDrobe!"
products = list(/obj/item/clothing/accessory/pocketprotector = 1,
/obj/item/storage/backpack/duffelbag/med = 1,
/obj/item/storage/backpack/medic = 1,
/obj/item/storage/backpack/satchel/med = 1,
/obj/item/clothing/suit/hooded/wintercoat/medical = 1,
/obj/item/clothing/under/rank/nursesuit = 1,
/obj/item/clothing/head/nursehat = 1,
/obj/item/clothing/under/rank/medical/blue = 1,
/obj/item/clothing/under/rank/medical/green = 1,
/obj/item/clothing/under/rank/medical/purple = 1,
/obj/item/clothing/under/rank/medical = 3,
/obj/item/clothing/suit/toggle/labcoat = 3,
/obj/item/clothing/suit/toggle/labcoat/emt = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
/obj/item/clothing/head/soft/emt = 3,
/obj/item/clothing/suit/apron/surgical = 1,
/obj/item/clothing/mask/surgical = 1)
products = list(/obj/item/clothing/accessory/pocketprotector = 3,
/obj/item/storage/backpack/duffelbag/med = 3,
/obj/item/storage/backpack/medic = 3,
/obj/item/storage/backpack/satchel/med = 3,
/obj/item/clothing/suit/hooded/wintercoat/medical = 3,
/obj/item/clothing/under/rank/nursesuit = 3,
/obj/item/clothing/head/nursehat = 3,
/obj/item/clothing/under/rank/medical/blue = 2,
/obj/item/clothing/under/rank/medical/green = 2,
/obj/item/clothing/under/rank/medical/purple = 2,
/obj/item/clothing/under/rank/medical = 5,
/obj/item/clothing/suit/toggle/labcoat = 5,
/obj/item/clothing/suit/toggle/labcoat/emt = 5,
/obj/item/clothing/shoes/sneakers/white = 5,
/obj/item/clothing/head/soft/emt = 5,
/obj/item/clothing/suit/apron/surgical = 3,
/obj/item/clothing/mask/surgical = 5)
refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe
/obj/item/vending_refill/wardrobe/medi_wardrobe
@@ -61,15 +61,15 @@
icon_state = "engidrobe"
product_ads = "Guaranteed to protect your feet from industrial accidents!;Afraid of radiation? Then wear yellow!"
vend_reply = "Thank you for using the EngiDrobe!"
products = list(/obj/item/clothing/accessory/pocketprotector = 1,
/obj/item/storage/backpack/duffelbag/engineering = 1,
/obj/item/storage/backpack/industrial = 1,
/obj/item/storage/backpack/satchel/eng = 1,
/obj/item/clothing/suit/hooded/wintercoat/engineering = 1,
/obj/item/clothing/under/rank/engineer = 3,
/obj/item/clothing/suit/hazardvest = 3,
/obj/item/clothing/shoes/workboots = 3,
/obj/item/clothing/head/hardhat = 3)
products = list(/obj/item/clothing/accessory/pocketprotector = 5,
/obj/item/storage/backpack/duffelbag/engineering = 2,
/obj/item/storage/backpack/industrial = 3,
/obj/item/storage/backpack/satchel/eng = 3,
/obj/item/clothing/suit/hooded/wintercoat/engineering = 3,
/obj/item/clothing/under/rank/engineer = 5,
/obj/item/clothing/suit/hazardvest = 5,
/obj/item/clothing/shoes/workboots = 5,
/obj/item/clothing/head/hardhat = 5)
refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe
/obj/item/vending_refill/wardrobe/engi_wardrobe
@@ -81,13 +81,13 @@
icon_state = "atmosdrobe"
product_ads = "Get your inflammable clothing right here!!!"
vend_reply = "Thank you for using the AtmosDrobe!"
products = list(/obj/item/clothing/accessory/pocketprotector = 1,
/obj/item/storage/backpack/duffelbag/engineering = 1,
/obj/item/storage/backpack/satchel/eng = 1,
/obj/item/storage/backpack/industrial = 1,
/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 3,
/obj/item/clothing/under/rank/atmospheric_technician = 3,
/obj/item/clothing/shoes/sneakers/black = 3)
products = list(/obj/item/clothing/accessory/pocketprotector = 3,
/obj/item/storage/backpack/duffelbag/engineering = 3,
/obj/item/storage/backpack/satchel/eng = 3,
/obj/item/storage/backpack/industrial = 3,
/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 5,
/obj/item/clothing/under/rank/atmospheric_technician = 5,
/obj/item/clothing/shoes/sneakers/black = 5)
refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe
/obj/item/vending_refill/wardrobe/atmos_wardrobe
@@ -99,12 +99,12 @@
icon_state = "cargodrobe"
product_ads = "Upgraded Assistant Style! Pick yours today!;These shorts are comfy and easy to wear, get yours now!"
vend_reply = "Thank you for using the CargoDrobe!"
products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 1,
/obj/item/clothing/under/rank/cargotech = 3,
/obj/item/clothing/shoes/sneakers/black = 3,
/obj/item/clothing/gloves/fingerless = 3,
/obj/item/clothing/head/soft = 3,
/obj/item/radio/headset/headset_cargo = 1)
products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 3,
/obj/item/clothing/under/rank/cargotech = 5,
/obj/item/clothing/shoes/sneakers/black = 5,
/obj/item/clothing/gloves/fingerless = 5,
/obj/item/clothing/head/soft = 5,
/obj/item/radio/headset/headset_cargo = 3)
refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe
/obj/item/vending_refill/wardrobe/cargo_wardrobe
@@ -116,13 +116,13 @@
icon_state = "robodrobe"
product_ads = "You turn me TRUE, use defines!;0110001101101100011011110111010001101000011001010111001101101000011001010111001001100101"
vend_reply = "Thank you for using the RoboDrobe!"
products = list(/obj/item/clothing/glasses/hud/diagnostic = 2,
/obj/item/clothing/under/rank/roboticist = 2,
/obj/item/clothing/suit/toggle/labcoat = 2,
/obj/item/clothing/shoes/sneakers/black = 2,
/obj/item/clothing/gloves/fingerless = 2,
/obj/item/clothing/head/soft/black = 2,
/obj/item/clothing/mask/bandana/skull = 1)
products = list(/obj/item/clothing/glasses/hud/diagnostic = 3,
/obj/item/clothing/under/rank/roboticist = 3,
/obj/item/clothing/suit/toggle/labcoat = 3,
/obj/item/clothing/shoes/sneakers/black = 3,
/obj/item/clothing/gloves/fingerless = 3,
/obj/item/clothing/head/soft/black = 3,
/obj/item/clothing/mask/bandana/skull = 2)
premium = list(/obj/item/radio/headset/headset_rob = 2) //Cit change
refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe
@@ -135,15 +135,15 @@
icon_state = "scidrobe"
product_ads = "Longing for the smell of flesh plasma? Buy your science clothing now!;Made with 10% Auxetics, so you don't have to worry losing your arm!"
vend_reply = "Thank you for using the SciDrobe!"
products = list(/obj/item/clothing/accessory/pocketprotector = 1,
/obj/item/storage/backpack/science = 2,
/obj/item/storage/backpack/satchel/tox = 2,
/obj/item/clothing/suit/hooded/wintercoat/science = 1,
/obj/item/clothing/under/rank/scientist = 3,
/obj/item/clothing/suit/toggle/labcoat/science = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
/obj/item/radio/headset/headset_sci = 2,
/obj/item/clothing/mask/gas = 3)
products = list(/obj/item/clothing/accessory/pocketprotector = 5,
/obj/item/storage/backpack/science = 3,
/obj/item/storage/backpack/satchel/tox = 3,
/obj/item/clothing/suit/hooded/wintercoat/science = 3,
/obj/item/clothing/under/rank/scientist = 4,
/obj/item/clothing/suit/toggle/labcoat/science = 4,
/obj/item/clothing/shoes/sneakers/white = 4,
/obj/item/radio/headset/headset_sci = 4,
/obj/item/clothing/mask/gas = 5)
refill_canister = /obj/item/vending_refill/wardrobe/science_wardrobe
/obj/item/vending_refill/wardrobe/science_wardrobe
@@ -155,13 +155,13 @@
icon_state = "hydrobe"
product_ads = "Do you love soil? Then buy our clothes!;Get outfits to match your green thumb here!"
vend_reply = "Thank you for using the Hydrobe!"
products = list(/obj/item/storage/backpack/botany = 2,
/obj/item/storage/backpack/satchel/hyd = 2,
/obj/item/clothing/suit/hooded/wintercoat/hydro = 1,
/obj/item/clothing/suit/apron = 2,
/obj/item/clothing/suit/apron/overalls = 3,
/obj/item/clothing/under/rank/hydroponics = 3,
/obj/item/clothing/mask/bandana = 3)
products = list(/obj/item/storage/backpack/botany = 3,
/obj/item/storage/backpack/satchel/hyd = 3,
/obj/item/clothing/suit/hooded/wintercoat/hydro = 2,
/obj/item/clothing/suit/apron = 3,
/obj/item/clothing/suit/apron/overalls = 5,
/obj/item/clothing/under/rank/hydroponics = 5,
/obj/item/clothing/mask/bandana = 4)
refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe
/obj/item/vending_refill/wardrobe/hydro_wardrobe
@@ -173,12 +173,12 @@
icon_state = "curadrobe"
product_ads = "Our clothes are endorsed by treasure hunters everywhere!"
vend_reply = "Thank you for using the CuraDrobe!"
products = list(/obj/item/clothing/head/fedora/curator = 1,
/obj/item/clothing/suit/curator = 1,
/obj/item/clothing/under/rank/curator/treasure_hunter = 1,
/obj/item/clothing/shoes/workboots/mining = 1,
/obj/item/storage/backpack/satchel/explorer = 1,
/obj/item/storage/bag/books = 1)
products = list(/obj/item/clothing/head/fedora/curator = 2,
/obj/item/clothing/suit/curator = 2,
/obj/item/clothing/under/rank/curator/treasure_hunter = 2,
/obj/item/clothing/shoes/workboots/mining = 2,
/obj/item/storage/backpack/satchel/explorer = 2,
/obj/item/storage/bag/books = 2)
refill_canister = /obj/item/vending_refill/wardrobe/curator_wardrobe
/obj/item/vending_refill/wardrobe/curator_wardrobe
@@ -190,21 +190,21 @@
icon_state = "bardrobe"
product_ads = "Guaranteed to prevent stains from spilled drinks!"
vend_reply = "Thank you for using the BarDrobe!"
products = list(/obj/item/clothing/head/that = 2,
/obj/item/radio/headset/headset_srv = 2,
/obj/item/clothing/under/sl_suit = 2,
/obj/item/clothing/under/rank/bartender = 2,
/obj/item/clothing/under/rank/bartender/purple = 1,
/obj/item/clothing/accessory/waistcoat = 2,
/obj/item/clothing/suit/apron/purple_bartender = 1,
/obj/item/clothing/head/soft/black = 2,
/obj/item/clothing/shoes/sneakers/black = 2,
/obj/item/reagent_containers/glass/rag = 2,
products = list(/obj/item/clothing/head/that = 3,
/obj/item/radio/headset/headset_srv = 3,
/obj/item/clothing/under/sl_suit = 3,
/obj/item/clothing/under/rank/bartender = 3,
/obj/item/clothing/under/rank/bartender/purple = 2,
/obj/item/clothing/accessory/waistcoat = 3,
/obj/item/clothing/suit/apron/purple_bartender = 2,
/obj/item/clothing/head/soft/black = 4,
/obj/item/clothing/shoes/sneakers/black = 4,
/obj/item/reagent_containers/glass/rag = 4,
/obj/item/storage/box/beanbag = 1,
/obj/item/clothing/suit/armor/vest/alt = 1,
/obj/item/circuitboard/machine/dish_drive = 1,
/obj/item/clothing/glasses/sunglasses/reagent = 1,
/obj/item/clothing/neck/petcollar = 1,
/obj/item/clothing/neck/petcollar = 3,
/obj/item/storage/belt/bandolier = 1)
refill_canister = /obj/item/vending_refill/wardrobe/bar_wardrobe
@@ -217,17 +217,17 @@
icon_state = "chefdrobe"
product_ads = "Our clothes are guaranteed to protect you from food splatters!"
vend_reply = "Thank you for using the ChefDrobe!"
products = list(/obj/item/clothing/under/waiter = 2,
/obj/item/radio/headset/headset_srv = 2,
/obj/item/clothing/accessory/waistcoat = 2,
products = list(/obj/item/clothing/under/waiter = 3,
/obj/item/radio/headset/headset_srv = 4,
/obj/item/clothing/accessory/waistcoat = 3,
/obj/item/clothing/suit/apron/chef = 3,
/obj/item/clothing/head/soft/mime = 2,
/obj/item/storage/box/mousetraps = 2,
/obj/item/circuitboard/machine/dish_drive = 1,
/obj/item/clothing/suit/toggle/chef = 1,
/obj/item/clothing/under/rank/chef = 1,
/obj/item/clothing/head/chefhat = 1,
/obj/item/reagent_containers/glass/rag = 1)
/obj/item/clothing/suit/toggle/chef = 2,
/obj/item/clothing/under/rank/chef = 2,
/obj/item/clothing/head/chefhat = 2,
/obj/item/reagent_containers/glass/rag = 3)
refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe
/obj/item/vending_refill/wardrobe/chef_wardrobe
@@ -239,21 +239,21 @@
icon_state = "janidrobe"
product_ads = "Come and get your janitorial clothing, now endorsed by lizard janitors everywhere!"
vend_reply = "Thank you for using the JaniDrobe!"
products = list(/obj/item/clothing/under/rank/janitor = 1,
/obj/item/cartridge/janitor = 1,
/obj/item/clothing/gloves/color/black = 1,
/obj/item/clothing/head/soft/purple = 1,
/obj/item/paint/paint_remover = 1,
products = list(/obj/item/clothing/under/rank/janitor = 2,
/obj/item/cartridge/janitor = 3,
/obj/item/clothing/gloves/color/black = 2,
/obj/item/clothing/head/soft/purple = 2,
/obj/item/paint/paint_remover = 2,
/obj/item/melee/flyswatter = 1,
/obj/item/flashlight = 1,
/obj/item/caution = 6,
/obj/item/flashlight = 2,
/obj/item/caution = 8,
/obj/item/holosign_creator = 1,
/obj/item/lightreplacer = 1,
/obj/item/soap = 1,
/obj/item/storage/bag/trash = 1,
/obj/item/clothing/shoes/galoshes = 1,
/obj/item/watertank/janitor = 1,
/obj/item/storage/belt/janitor = 1)
/obj/item/storage/belt/janitor = 2)
refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe
/obj/item/vending_refill/wardrobe/jani_wardrobe
@@ -265,17 +265,17 @@
icon_state = "lawdrobe"
product_ads = "OBJECTION! Get the rule of law for yourself!"
vend_reply = "Thank you for using the LawDrobe!"
products = list(/obj/item/clothing/under/lawyer/female = 1,
/obj/item/clothing/under/lawyer/black = 1,
/obj/item/clothing/under/lawyer/red = 1,
/obj/item/clothing/under/lawyer/bluesuit = 1,
/obj/item/clothing/suit/toggle/lawyer = 1,
/obj/item/clothing/under/lawyer/purpsuit = 1,
/obj/item/clothing/suit/toggle/lawyer/purple = 1,
/obj/item/clothing/under/lawyer/blacksuit = 1,
/obj/item/clothing/suit/toggle/lawyer/black = 1,
/obj/item/clothing/shoes/laceup = 2,
/obj/item/clothing/accessory/lawyers_badge = 2)
products = list(/obj/item/clothing/under/lawyer/female = 3,
/obj/item/clothing/under/lawyer/black = 3,
/obj/item/clothing/under/lawyer/red = 3,
/obj/item/clothing/under/lawyer/bluesuit = 3,
/obj/item/clothing/suit/toggle/lawyer = 3,
/obj/item/clothing/under/lawyer/purpsuit = 3,
/obj/item/clothing/suit/toggle/lawyer/purple = 3,
/obj/item/clothing/under/lawyer/blacksuit = 3,
/obj/item/clothing/suit/toggle/lawyer/black = 3,
/obj/item/clothing/shoes/laceup = 3,
/obj/item/clothing/accessory/lawyers_badge = 3)
refill_canister = /obj/item/vending_refill/wardrobe/law_wardrobe
/obj/item/vending_refill/wardrobe/law_wardrobe
@@ -288,14 +288,14 @@
product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!"
vend_reply = "Thank you for using the ChapDrobe!"
products = list(/obj/item/holybeacon = 1,
/obj/item/storage/backpack/cultpack = 1,
/obj/item/clothing/accessory/pocketprotector/cosmetology = 1,
/obj/item/clothing/under/rank/chaplain = 1,
/obj/item/clothing/shoes/sneakers/black = 1,
/obj/item/clothing/suit/nun = 1,
/obj/item/clothing/head/nun_hood = 1,
/obj/item/clothing/suit/holidaypriest = 1,
/obj/item/storage/fancy/candle_box = 2)
/obj/item/storage/backpack/cultpack = 2,
/obj/item/clothing/accessory/pocketprotector/cosmetology = 2,
/obj/item/clothing/under/rank/chaplain = 2,
/obj/item/clothing/shoes/sneakers/black = 2,
/obj/item/clothing/suit/nun = 2,
/obj/item/clothing/head/nun_hood = 2,
/obj/item/clothing/suit/holidaypriest = 2,
/obj/item/storage/fancy/candle_box = 3)
refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe
/obj/item/vending_refill/wardrobe/chap_wardrobe
@@ -307,12 +307,12 @@
icon_state = "chemdrobe"
product_ads = "Our clothes are 0.5% more resistant to acid spills! Get yours now!"
vend_reply = "Thank you for using the ChemDrobe!"
products = list(/obj/item/clothing/under/rank/chemist = 2,
/obj/item/clothing/shoes/sneakers/white = 2,
/obj/item/clothing/suit/toggle/labcoat/chemist = 2,
/obj/item/storage/backpack/chemistry = 2,
/obj/item/storage/backpack/satchel/chem = 2,
/obj/item/storage/bag/chemistry = 2)
products = list(/obj/item/clothing/under/rank/chemist = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
/obj/item/clothing/suit/toggle/labcoat/chemist = 3,
/obj/item/storage/backpack/chemistry = 3,
/obj/item/storage/backpack/satchel/chem = 3,
/obj/item/storage/bag/chemistry = 3)
refill_canister = /obj/item/vending_refill/wardrobe/chem_wardrobe
/obj/item/vending_refill/wardrobe/chem_wardrobe
@@ -324,11 +324,11 @@
icon_state = "genedrobe"
product_ads = "Perfect for the mad scientist in you!"
vend_reply = "Thank you for using the GeneDrobe!"
products = list(/obj/item/clothing/under/rank/geneticist = 2,
/obj/item/clothing/shoes/sneakers/white = 2,
/obj/item/clothing/suit/toggle/labcoat/genetics = 2,
/obj/item/storage/backpack/genetics = 2,
/obj/item/storage/backpack/satchel/gen = 2)
products = list(/obj/item/clothing/under/rank/geneticist = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
/obj/item/clothing/suit/toggle/labcoat/genetics = 3,
/obj/item/storage/backpack/genetics = 3,
/obj/item/storage/backpack/satchel/gen = 3)
refill_canister = /obj/item/vending_refill/wardrobe/gene_wardrobe
/obj/item/vending_refill/wardrobe/gene_wardrobe
@@ -340,12 +340,12 @@
icon_state = "virodrobe"
product_ads = " Viruses getting you down? Then upgrade to sterilized clothing today!"
vend_reply = "Thank you for using the ViroDrobe"
products = list(/obj/item/clothing/under/rank/virologist = 2,
/obj/item/clothing/shoes/sneakers/white = 2,
/obj/item/clothing/suit/toggle/labcoat/virologist = 2,
/obj/item/clothing/mask/surgical = 2,
/obj/item/storage/backpack/virology = 2,
/obj/item/storage/backpack/satchel/vir = 2)
products = list(/obj/item/clothing/under/rank/virologist = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
/obj/item/clothing/suit/toggle/labcoat/virologist = 3,
/obj/item/clothing/mask/surgical = 3,
/obj/item/storage/backpack/virology = 3,
/obj/item/storage/backpack/satchel/vir = 3)
refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe
/obj/item/vending_refill/wardrobe/viro_wardrobe