From 6f7a7177f27413373ebac6be6ce038a109cb17d8 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Fri, 16 Jan 2015 02:57:59 +0300 Subject: [PATCH] Adds drying racks and updates pipes You can now dry plants using a special machine, and you can now stuff those plants into pipes to smoke then. It slowly transfers the reagents from the plant into the smoker. --- code/WorkInProgress/Chinsky/ashtray.dm | 10 +- code/__HELPERS/unsorted.dm | 4 +- code/game/machinery/kitchen/smartfridge.dm | 97 +++-- code/game/machinery/washing_machine.dm | 2 +- code/game/objects/effects/landmarks.dm | 2 +- code/game/objects/items/weapons/RSF.dm | 2 +- .../objects/items/weapons/cigs_lighters.dm | 388 ++++++++++-------- .../objects/items/weapons/storage/fancy.dm | 14 +- code/modules/admin/verbs/debug.dm | 2 +- code/modules/awaymissions/corpse.dm | 2 +- code/modules/hydroponics/grown_inedible.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 2 +- .../reagents/reagent_containers/dropper.dm | 2 +- .../reagent_containers/food/snacks.dm | 2 + .../reagent_containers/food/snacks/grown.dm | 4 + .../reagents/reagent_containers/syringes.dm | 2 +- code/modules/surgery/eye.dm | 2 +- code/modules/surgery/face.dm | 2 +- code/modules/surgery/generic.dm | 2 +- code/modules/surgery/headreattach.dm | 2 +- code/modules/surgery/implant.dm | 2 +- code/modules/surgery/robolimbs.dm | 2 +- maps/exodus-1.dmm | 6 +- maps/exodus-2.dmm | 4 +- 24 files changed, 312 insertions(+), 247 deletions(-) diff --git a/code/WorkInProgress/Chinsky/ashtray.dm b/code/WorkInProgress/Chinsky/ashtray.dm index 1e48c49499..1e2fc4884f 100644 --- a/code/WorkInProgress/Chinsky/ashtray.dm +++ b/code/WorkInProgress/Chinsky/ashtray.dm @@ -17,15 +17,15 @@ /obj/item/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob) if (health < 1) return - if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/flame/match)) + if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match)) if (contents.len >= max_butts) user << "This ashtray is full." return user.u_equip(W) W.loc = src - if (istype(W,/obj/item/clothing/mask/cigarette)) - var/obj/item/clothing/mask/cigarette/cig = W + if (istype(W,/obj/item/clothing/mask/smokable/cigarette)) + var/obj/item/clothing/mask/smokable/cigarette/cig = W if (cig.lit == 1) src.visible_message("[user] crushes [cig] in [src], putting it out.") processing_objects.Remove(cig) @@ -61,14 +61,14 @@ return if (contents.len) src.visible_message("\red [src] slams into [hit_atom] spilling its contents!") - for (var/obj/item/clothing/mask/cigarette/O in contents) + for (var/obj/item/clothing/mask/smokable/cigarette/O in contents) O.loc = src.loc icon_state = icon_empty return ..() /obj/item/ashtray/proc/die() src.visible_message("\red [src] shatters spilling its contents!") - for (var/obj/item/clothing/mask/cigarette/O in contents) + for (var/obj/item/clothing/mask/smokable/cigarette/O in contents) O.loc = src.loc icon_state = icon_broken diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index d78f3e7a9d..8969102e00 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1249,7 +1249,7 @@ proc/is_hot(obj/item/W as obj) return 1000 else return 0 - if(/obj/item/clothing/mask/cigarette) + if(/obj/item/clothing/mask/smokable/cigarette) if(W:lit) return 1000 else @@ -1287,7 +1287,7 @@ proc/is_hot(obj/item/W as obj) istype(W, /obj/item/weapon/weldingtool) || \ istype(W, /obj/item/weapon/flame/lighter/zippo) || \ istype(W, /obj/item/weapon/flame/match) || \ - istype(W, /obj/item/clothing/mask/cigarette) || \ + istype(W, /obj/item/clothing/mask/smokable/cigarette) || \ istype(W, /obj/item/weapon/shovel) \ ) diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 52ca3debd9..8e86678ef2 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -16,8 +16,6 @@ var/icon_off = "smartfridge-off" var/icon_panel = "smartfridge-panel" var/item_quants = list() - var/ispowered = 1 //starts powered - var/isbroken = 0 var/seconds_electrified = 0; var/shoot_inventory = 0 var/locked = 0 @@ -26,7 +24,7 @@ var/is_secure = 0 var/datum/wires/smartfridge/wires = null -/obj/machinery/smartfridge/secure/ +/obj/machinery/smartfridge/secure is_secure = 1 /obj/machinery/smartfridge/New() @@ -121,8 +119,39 @@ if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) return 1 +/obj/machinery/smartfridge/drying_rack + name = "\improper Drying Rack" + desc = "A machine for drying plants." + +/obj/machinery/smartfridge/drying_rack/accept_check(var/obj/item/O as obj) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/)) + var/obj/item/weapon/reagent_containers/food/snacks/S = O + if (S.dried_type) + return 1 + return 0 + +/obj/machinery/smartfridge/drying_rack/process() + ..() + if (contents.len) + dry() + +/obj/machinery/smartfridge/drying_rack/proc/dry() + for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents) + if(S.dried_type == S.type) + S.dry = 1 + item_quants[S.name]-- + S.name = "dried [S.name]" + S.loc = loc + else + var/D = S.dried_type + new D(loc) + item_quants[S.name]-- + del(S) + return + return + /obj/machinery/smartfridge/process() - if(!src.ispowered) + if(stat & (BROKEN|NOPOWER)) return if(src.seconds_electrified > 0) src.seconds_electrified-- @@ -130,16 +159,16 @@ src.throw_item() /obj/machinery/smartfridge/power_change() + var/old_stat = stat ..() - if( !(stat & NOPOWER) ) - src.ispowered = 1 - if(!isbroken) - icon_state = icon_on + if(old_stat != stat) + update_icon() + +/obj/machinery/smartfridge/update_icon() + if(stat & (BROKEN|NOPOWER)) + icon_state = icon_off else - spawn(rand(0, 15)) - src.ispowered = 0 - if(!isbroken) - icon_state = icon_off + icon_state = icon_on /******************* * Item Adding @@ -148,7 +177,7 @@ /obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) if(istype(O, /obj/item/weapon/screwdriver)) panel_open = !panel_open - user << "You [panel_open ? "open" : "close"] the maintenance panel." + user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") overlays.Cut() if(panel_open) overlays += image(icon, icon_panel) @@ -160,7 +189,7 @@ attack_hand(user) return - if(!src.ispowered) + if(stat & NOPOWER) user << "\The [src] is unpowered and useless." return @@ -175,13 +204,12 @@ item_quants[O.name]++ else item_quants[O.name] = 1 - user.visible_message("[user] has added \the [O] to \the [src].", \ - "You add \the [O] to \the [src].") + user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") nanomanager.update_uis(src) - else if(istype(O, /obj/item/weapon/storage/bag/plants)) - var/obj/item/weapon/storage/bag/plants/P = O + else if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/bag/P = O var/plants_loaded = 0 for(var/obj/G in P.contents) if(accept_check(G)) @@ -197,9 +225,7 @@ plants_loaded++ if(plants_loaded) - user.visible_message( \ - "[user] loads \the [src] with \the [P].", \ - "You load \the [src] with \the [P].") + user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") if(P.contents.len > 0) user << "Some items are refused." @@ -210,7 +236,7 @@ return 1 /obj/machinery/smartfridge/secure/attackby(var/obj/item/O as obj, var/mob/user as mob) - if (istype(O, /obj/item/weapon/card/emag)) + if(istype(O, /obj/item/weapon/card/emag)) emagged = 1 locked = -1 user << "You short out the product lock on [src]." @@ -222,7 +248,8 @@ return 0 /obj/machinery/smartfridge/attack_hand(mob/user as mob) - if(!ispowered) return + if(stat & (NOPOWER|BROKEN)) + return wires.Interact(user) ui_interact(user) @@ -244,32 +271,32 @@ for (var/i=1 to length(item_quants)) var/K = item_quants[i] var/count = item_quants[K] - if (count > 0) + if(count > 0) items.Add(list(list("display_name" = html_encode(capitalize(K)), "vend" = i, "quantity" = count))) - if (items.len > 0) + if(items.len > 0) data["contents"] = items ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) + if(!ui) ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) ui.set_initial_data(data) ui.open() /obj/machinery/smartfridge/Topic(href, href_list) - if (..()) return 0 + if(..()) return 0 var/mob/user = usr var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main") src.add_fingerprint(user) - if (href_list["close"]) + if(href_list["close"]) user.unset_machine() ui.close() return 0 - if (href_list["vend"]) + if(href_list["vend"]) var/index = text2num(href_list["vend"]) var/amount = text2num(href_list["amount"]) var/K = item_quants[index] @@ -281,10 +308,10 @@ var/i = amount for(var/obj/O in contents) - if (O.name == K) + if(O.name == K) O.loc = loc i-- - if (i <= 0) + if(i <= 0) return 1 return 1 @@ -319,9 +346,9 @@ *************************/ /obj/machinery/smartfridge/secure/Topic(href, href_list) - if(!ispowered) return 0 - if (usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) - if (!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) - usr << "\red Access denied." + if(stat & (NOPOWER|BROKEN)) return 0 + if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) + if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) + usr << "Access denied." return 0 return ..() diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 77fde8ef7e..ad433d12e2 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -250,7 +250,7 @@ if ( istype(W,/obj/item/clothing/mask/gas ) ) user << "This item does not fit." return - if ( istype(W,/obj/item/clothing/mask/cigarette ) ) + if ( istype(W,/obj/item/clothing/mask/smokable/cigarette ) ) user << "This item does not fit." return if ( istype(W,/obj/item/clothing/head/syndicatefake ) ) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index dbfd0a9e61..b88847c6aa 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -144,7 +144,7 @@ /obj/effect/landmark/costume/elpresidente/New() new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc) + new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(src.loc) new /obj/item/clothing/shoes/jackboots(src.loc) del(src) diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index f9f32bbeb1..5fe6016092 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -100,7 +100,7 @@ RSF product = new /obj/item/weapon/storage/pill_bottle/dice() used_energy = 200 if(6) - product = new /obj/item/clothing/mask/cigarette() + product = new /obj/item/clothing/mask/smokable/cigarette() used_energy = 10 user << "Dispensing [product ? product : "product"]..." diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 4d09a26bcf..90ba157260 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -16,6 +16,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/flame var/lit = 0 +/proc/isflamesource(A) + if(istype(A, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = A + return (WT.isOn()) + else if(istype(A, /obj/item/weapon/flame)) + var/obj/item/weapon/flame/F = A + return (F.lit) + else if(istype(A, /obj/item/device/assembly/igniter)) + return 1 + return 0 + /////////// //MATCHES// /////////// @@ -58,85 +69,50 @@ CIGARETTE PACKETS ARE IN FANCY.DM ////////////////// //FINE SMOKABLES// ////////////////// -/obj/item/clothing/mask/cigarette - name = "cigarette" - desc = "A roll of tobacco and nicotine." - icon_state = "cigoff" - throw_speed = 0.5 - item_state = "cigoff" - w_class = 1 +/obj/item/clothing/mask/smokable + name = "smokable item" + desc = "You're not sure what this is. You should probably ahelp it." body_parts_covered = 0 - attack_verb = list("burnt", "singed") var/lit = 0 - var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi - var/icon_off = "cigoff" - var/type_butt = /obj/item/weapon/cigbutt - var/lastHolder = null - var/smoketime = 300 - var/chem_volume = 15 - body_parts_covered = 0 + var/icon_on + var/icon_off + var/type_butt = null + var/chem_volume = 0 + var/smoketime = 0 -/obj/item/clothing/mask/cigarette/New() +/obj/item/clothing/mask/smokable/New() ..() flags |= NOREACT // so it doesn't react until you light it create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15 -/obj/item/clothing/mask/cigarette/Del() +/obj/item/clothing/mask/smokable/Del() ..() del(reagents) -/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool - light("[user] casually lights the [name] with [W].") +/obj/item/clothing/mask/smokable/process() + var/turf/location = get_turf(src) + smoketime-- + if(smoketime < 1) + die() + return + if(location) + location.hotspot_expose(700, 5) + if(reagents && reagents.total_volume) // check if it has any reagents at all + if(iscarbon(loc)) + var/mob/living/carbon/C = loc + if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob + if(istype(C, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = C + if(H.species.flags & IS_SYNTHETIC) + return - else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) - var/obj/item/weapon/flame/lighter/zippo/Z = W - if(Z.lit) - light("With a flick of their wrist, [user] lights their [name] with their [W].") - - else if(istype(W, /obj/item/weapon/flame/lighter)) - var/obj/item/weapon/flame/lighter/L = W - if(L.lit) - light("[user] manages to light their [name] with [W].") - - else if(istype(W, /obj/item/weapon/flame/match)) - var/obj/item/weapon/flame/match/M = W - if(M.lit) - light("[user] lights their [name] with their [W].") - - else if(istype(W, /obj/item/weapon/melee/energy/sword)) - var/obj/item/weapon/melee/energy/sword/S = W - if(S.active) - light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") - - else if(istype(W, /obj/item/device/assembly/igniter)) - light("[user] fiddles with [W], and manages to light their [name].") - - //can't think of any other way to update the overlays :< - user.update_inv_wear_mask(0) - user.update_inv_l_hand(0) - user.update_inv_r_hand(1) + reagents.trans_to(C, REAGENTS_METABOLISM, 0.2) // Most of it is not inhaled... balance reasons. + reagents.reaction(C) + else // else just remove some of the reagents + reagents.remove_any(REAGENTS_METABOLISM) return - -/obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity) - ..() - if(!proximity) return - if(istype(glass)) //you can dip cigarettes into beakers - var/transfered = glass.reagents.trans_to(src, chem_volume) - if(transfered) //if reagents were transfered, show the message - user << "You dip \the [src] into \the [glass]." - else //if not, either the beaker was empty, or the cigarette was full - if(!glass.reagents.total_volume) - user << "[glass] is empty." - else - user << "[src] is full." - - -/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].") +/obj/item/clothing/mask/smokable/proc/light(var/flavor_text = "[usr] lights the [name].") if(!src.lit) src.lit = 1 damtype = "fire" @@ -156,58 +132,113 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.handle_reactions() icon_state = icon_on item_state = icon_on + if(ismob(loc)) + var/mob/living/M = loc + M.update_inv_wear_mask(0) var/turf/T = get_turf(src) T.visible_message(flavor_text) processing_objects.Add(src) +/obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0) + var/turf/T = get_turf(src) + if (type_butt) + var/obj/item/butt = new type_butt(T) + transfer_fingerprints_to(butt) + if(ismob(loc)) + var/mob/living/M = loc + if (!nomessage) + M << "Your [name] goes out." + M.u_equip(src) //un-equip it so the overlays can update + M.update_inv_wear_mask(0) + processing_objects.Remove(src) + del(src) + else + new /obj/effect/decal/cleanable/ash(T) + if(ismob(loc)) + var/mob/living/M = loc + if (!nomessage) + M << "Your [name] goes out, and you empty the ash." + lit = 0 + icon_state = icon_off + item_state = icon_off + M.update_inv_wear_mask(0) + processing_objects.Remove(src) -/obj/item/clothing/mask/cigarette/process() - var/turf/location = get_turf(src) - smoketime-- - if(smoketime < 1) - die() - return - if(location) - location.hotspot_expose(700, 5) - if(reagents && reagents.total_volume) // check if it has any reagents at all - if(iscarbon(loc) && (src == loc:wear_mask)) // if it's in the human/monkey mouth, transfer reagents to the mob - if(istype(loc, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = loc - if(H.species.flags & IS_SYNTHETIC) - return - var/mob/living/carbon/C = loc +/obj/item/clothing/mask/smokable/cigarette + name = "cigarette" + desc = "A roll of tobacco and nicotine." + icon_state = "cigoff" + throw_speed = 0.5 + item_state = "cigoff" + w_class = 1 + attack_verb = list("burnt", "singed") + icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi + icon_off = "cigoff" + type_butt = /obj/item/weapon/cigbutt + chem_volume = 15 + smoketime = 300 - if(prob(15)) // so it's not an instarape in case of acid - reagents.reaction(C, INGEST) - reagents.trans_to(C, REAGENTS_METABOLISM) - else // else just remove some of the reagents - reagents.remove_any(REAGENTS_METABOLISM) +/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if (isflamesource(W)) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool + light("[user] casually lights the [name] with [W].") + + else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) + var/obj/item/weapon/flame/lighter/zippo/Z = W + if(Z.lit) + light("With a flick of their wrist, [user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/weapon/flame/lighter)) + var/obj/item/weapon/flame/lighter/L = W + if(L.lit) + light("[user] manages to light their [name] with [W].") + + else if(istype(W, /obj/item/weapon/flame/match)) + var/obj/item/weapon/flame/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") + + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name].") + + else if(istype(W, /obj/item/weapon/melee/energy/sword)) + var/obj/item/weapon/melee/energy/sword/S = W + if(S.active) + light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") + + //can't think of any other way to update the overlays :< + user.update_inv_wear_mask(0) + user.update_inv_l_hand(0) + user.update_inv_r_hand(1) return +/obj/item/clothing/mask/smokable/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity) + ..() + if(!proximity) + return + if(istype(glass)) //you can dip cigarettes into beakers + var/transfered = glass.reagents.trans_to(src, chem_volume) + if(transfered) //if reagents were transfered, show the message + user << "You dip \the [src] into \the [glass]." + else //if not, either the beaker was empty, or the cigarette was full + if(!glass.reagents.total_volume) + user << "[glass] is empty." + else + user << "[src] is full." -/obj/item/clothing/mask/cigarette/attack_self(mob/user as mob) +/obj/item/clothing/mask/smokable/cigarette/attack_self(mob/user as mob) if(lit == 1) user.visible_message("[user] calmly drops and treads on the lit [src], putting it out instantly.") - die() + die(1) return ..() - -/obj/item/clothing/mask/cigarette/proc/die() - var/turf/T = get_turf(src) - var/obj/item/butt = new type_butt(T) - transfer_fingerprints_to(butt) - if(ismob(loc)) - var/mob/living/M = loc - M << "Your [name] goes out." - M.u_equip(src) //un-equip it so the overlays can update - M.update_inv_wear_mask(0) - processing_objects.Remove(src) - del(src) - //////////// // CIGARS // //////////// -/obj/item/clothing/mask/cigarette/cigar +/obj/item/clothing/mask/smokable/cigarette/cigar name = "premium cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigar2off" @@ -219,14 +250,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM smoketime = 1500 chem_volume = 20 -/obj/item/clothing/mask/cigarette/cigar/cohiba +/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba name = "\improper Cohiba Robusto cigar" desc = "There's little more you could want from a cigar." icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" -/obj/item/clothing/mask/cigarette/cigar/havana +/obj/item/clothing/mask/smokable/cigarette/cigar/havana name = "premium Havanian cigar" desc = "A cigar fit for only the best of the best." icon_state = "cigar2off" @@ -254,50 +285,55 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A manky old cigar butt." icon_state = "cigarbutt" +/obj/item/clothing/mask/smokable/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(isflamesource(W)) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) + light("[user] insults [name] by lighting it with [W].") -/obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.isOn()) - light("[user] insults [name] by lighting it with [W].") + else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) + var/obj/item/weapon/flame/lighter/zippo/Z = W + if(Z.lit) + light("With a flick of their wrist, [user] lights their [name] with their [W].") - else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) - var/obj/item/weapon/flame/lighter/zippo/Z = W - if(Z.lit) - light("With a flick of their wrist, [user] lights their [name] with their [W].") + else if(istype(W, /obj/item/weapon/flame/lighter)) + var/obj/item/weapon/flame/lighter/L = W + if(L.lit) + light("[user] manages to offend their [name] by lighting it with [W].") - else if(istype(W, /obj/item/weapon/flame/lighter)) - var/obj/item/weapon/flame/lighter/L = W - if(L.lit) - light("[user] manages to offend their [name] by lighting it with [W].") + else if(istype(W, /obj/item/weapon/flame/match)) + var/obj/item/weapon/flame/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") - else if(istype(W, /obj/item/weapon/flame/match)) - var/obj/item/weapon/flame/match/M = W - if(M.lit) - light("[user] lights their [name] with their [W].") + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name] with the power of science.") else if(istype(W, /obj/item/weapon/melee/energy/sword)) var/obj/item/weapon/melee/energy/sword/S = W if(S.active) light("[user] swings their [W], barely missing their nose. They light their [name] in the process.") - else if(istype(W, /obj/item/device/assembly/igniter)) - light("[user] fiddles with [W], and manages to light their [name] with the power of science.") - ///////////////// //SMOKING PIPES// ///////////////// -/obj/item/clothing/mask/cigarette/pipe +/obj/item/clothing/mask/smokable/pipe name = "smoking pipe" desc = "A pipe, for smoking. Probably made of meershaum or something." icon_state = "pipeoff" item_state = "pipeoff" icon_on = "pipeon" //Note - these are in masks.dmi icon_off = "pipeoff" - smoketime = 100 + smoketime = 0 + chem_volume = 50 -/obj/item/clothing/mask/cigarette/pipe/light(var/flavor_text = "[usr] lights the [name].") - if(!src.lit) +/obj/item/clothing/mask/smokable/pipe/New() + ..() + name = "empty [initial(name)]" + +/obj/item/clothing/mask/smokable/pipe/light(var/flavor_text = "[usr] lights the [name].") + if(!src.lit && src.smoketime) src.lit = 1 damtype = "fire" icon_state = icon_on @@ -306,71 +342,67 @@ CIGARETTE PACKETS ARE IN FANCY.DM T.visible_message(flavor_text) processing_objects.Add(src) -/obj/item/clothing/mask/cigarette/pipe/process() - var/turf/location = get_turf(src) - smoketime-- - if(smoketime < 1) - new /obj/effect/decal/cleanable/ash(location) - if(ismob(loc)) - var/mob/living/M = loc - M << "Your [name] goes out, and you empty the ash." - lit = 0 - icon_state = icon_off - item_state = icon_off - M.update_inv_wear_mask(0) - processing_objects.Remove(src) - return - if(location) - location.hotspot_expose(700, 5) - return - -/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user as mob) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something. +/obj/item/clothing/mask/smokable/pipe/attack_self(mob/user as mob) if(lit == 1) - user.visible_message("[user] puts out [src].") + user.visible_message("[user] puts out [src].", "You put out [src].") lit = 0 icon_state = icon_off item_state = icon_off processing_objects.Remove(src) - return - if(smoketime <= 0) - user << "You refill the pipe with tobacco." - smoketime = initial(smoketime) - return + else if (smoketime) + var/turf/location = get_turf(user) + user.visible_message("[user] empties out [src].", "You empty out [src].") + new /obj/effect/decal/cleanable/ash(location) + smoketime = 0 + reagents.clear_reagents() + name = "empty [initial(name)]" -/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.isOn())// - light("[user] recklessly lights [name] with [W].") +/obj/item/clothing/mask/smokable/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(isflamesource(W)) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) + light("[user] recklessly lights [name] with [W].") - else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) - var/obj/item/weapon/flame/lighter/zippo/Z = W - if(Z.lit) - light("With much care, [user] lights their [name] with their [W].") + else if(istype(W, /obj/item/weapon/flame/lighter/zippo)) + var/obj/item/weapon/flame/lighter/zippo/Z = W + if(Z.lit) + light("With much care, [user] lights their [name] with their [W].") - else if(istype(W, /obj/item/weapon/flame/lighter)) - var/obj/item/weapon/flame/lighter/L = W - if(L.lit) - light("[user] manages to light their [name] with [W].") + else if(istype(W, /obj/item/weapon/flame/lighter)) + var/obj/item/weapon/flame/lighter/L = W + if(L.lit) + light("[user] manages to light their [name] with [W].") - else if(istype(W, /obj/item/weapon/flame/match)) - var/obj/item/weapon/flame/match/M = W - if(M.lit) - light("[user] lights their [name] with their [W].") + else if(istype(W, /obj/item/weapon/flame/match)) + var/obj/item/weapon/flame/match/M = W + if(M.lit) + light("[user] lights their [name] with their [W].") - else if(istype(W, /obj/item/device/assembly/igniter)) - light("[user] fiddles with [W], and manages to light their [name] with the power of science.") + else if(istype(W, /obj/item/device/assembly/igniter)) + light("[user] fiddles with [W], and manages to light their [name] with the power of science.") + else if (istype(W, /obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W + if (!G.dry) + user << "[G] must be dried before you stuff it into [src]." + return + if (smoketime) + user << "[src] is already packed." + return + smoketime = 1000 + if(G.reagents) + G.reagents.trans_to(src, G.reagents.total_volume) + name = "[G.name]-packed [initial(name)]" + del(G) -/obj/item/clothing/mask/cigarette/pipe/cobpipe +/obj/item/clothing/mask/smokable/pipe/cobpipe name = "corn cob pipe" desc = "A nicotine delivery system popularized by folksy backwoodsmen, kept popular in the modern age and beyond by space hipsters." icon_state = "cobpipeoff" item_state = "cobpipeoff" icon_on = "cobpipeon" //Note - these are in masks.dmi icon_off = "cobpipeoff" - smoketime = 400 - - + chem_volume = 35 ///////// //ZIPPO// @@ -445,8 +477,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!istype(M, /mob)) return - if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit) - var/obj/item/clothing/mask/cigarette/cig = M.wear_mask + if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == "mouth" && lit) + var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask if(M == user) cig.attackby(src, user) else diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 64d8e89bb7..1e7bcce223 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -27,7 +27,7 @@ /obj/item/weapon/storage/fancy/examine(mob/user) if(!..(user, 1)) return - + if(contents.len <= 0) user << "There are no [src.icon_type]s left in the box." else if(contents.len == 1) @@ -143,7 +143,7 @@ ..() flags |= NOREACT for(var/i = 1 to storage_slots) - new /obj/item/clothing/mask/cigarette(src) + new /obj/item/clothing/mask/smokable/cigarette(src) create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one /obj/item/weapon/storage/fancy/cigarettes/Del() @@ -156,7 +156,7 @@ return /obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location) - var/obj/item/clothing/mask/cigarette/C = W + var/obj/item/clothing/mask/smokable/cigarette/C = W if(!istype(C)) return // what reagents.trans_to(C, (reagents.total_volume/contents.len)) ..() @@ -166,7 +166,7 @@ return if(M == user && user.zone_sel.selecting == "mouth" && contents.len > 0 && !user.wear_mask) - var/obj/item/clothing/mask/cigarette/W = new /obj/item/clothing/mask/cigarette(user) + var/obj/item/clothing/mask/smokable/cigarette/W = new /obj/item/clothing/mask/smokable/cigarette(user) reagents.trans_to(W, (reagents.total_volume/contents.len)) user.equip_to_slot_if_possible(W, slot_wear_mask) reagents.maximum_volume = 15 * contents.len @@ -200,7 +200,7 @@ ..() flags |= NOREACT for(var/i = 1 to storage_slots) - new /obj/item/clothing/mask/cigarette/cigar(src) + new /obj/item/clothing/mask/smokable/cigarette/cigar(src) create_reagents(15 * storage_slots) /obj/item/weapon/storage/fancy/cigar/Del() @@ -212,7 +212,7 @@ return /obj/item/weapon/storage/fancy/cigar/remove_from_storage(obj/item/W as obj, atom/new_location) - var/obj/item/clothing/mask/cigarette/cigar/C = W + var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W if(!istype(C)) return reagents.trans_to(C, (reagents.total_volume/contents.len)) ..() @@ -222,7 +222,7 @@ return if(M == user && user.zone_sel.selecting == "mouth" && contents.len > 0 && !user.wear_mask) - var/obj/item/clothing/mask/cigarette/cigar/W = new /obj/item/clothing/mask/cigarette/cigar(user) + var/obj/item/clothing/mask/smokable/cigarette/cigar/W = new /obj/item/clothing/mask/smokable/cigarette/cigar(user) reagents.trans_to(W, (reagents.total_volume/contents.len)) user.equip_to_slot_if_possible(W, slot_wear_mask) reagents.maximum_volume = 15 * contents.len diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 0f088f9897..a33889d7d8 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -834,7 +834,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) + M.equip_to_slot_or_del(new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(M), slot_r_store) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 0be6799a43..11522902a2 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -223,7 +223,7 @@ corpsesuit = /obj/item/clothing/suit/armor/bulletproof corpseradio = /obj/item/device/radio/headset/heads/captain corpseglasses = /obj/item/clothing/glasses/eyepatch - corpsemask = /obj/item/clothing/mask/cigarette/cigar/cohiba + corpsemask = /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba corpsehelmet = /obj/item/clothing/head/centhat corpsegloves = /obj/item/clothing/gloves/swat corpseshoes = /obj/item/clothing/shoes/swat diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index d82807f738..8d5d85df10 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -183,6 +183,6 @@ ..() if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/kitchenknife/ritual)) user << "You use [W] to fashion a pipe out of the corn cob!" - new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) + new /obj/item/clothing/mask/smokable/pipe/cobpipe (user.loc) del(src) return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cc053f219d..c4fd50c114 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -789,7 +789,7 @@ proc/get_damage_icon_part(damage_state, body_part) else standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]") - if( !istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA ) + if( !istype(wear_mask, /obj/item/clothing/mask/smokable/cigarette) && wear_mask.blood_DNA ) var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "maskblood") bloodsies.color = wear_mask.blood_color standing.overlays += bloodsies diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 11fd71e620..1cfe480ff9 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -21,7 +21,7 @@ user << "\red [target] is full." return - if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit. + if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/smokable/cigarette)) //You can inject humans and food but you cant remove the shit. user << "\red You cannot directly fill this object." return diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 7aaad7a678..197fcf37fc 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -9,6 +9,8 @@ var/trash = null var/slice_path var/slices_num + var/dried_type = null + var/dry = 0 center_of_mass = list("x"=15, "y"=15) w_class = 2 diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index d570f13861..3a4d52c0df 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -17,10 +17,14 @@ ..() src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) + dried_type = -1 /obj/item/weapon/reagent_containers/food/snacks/grown/New() ..() + if (dried_type == -1) + dried_type = src.type + //Handle some post-spawn var stuff. spawn(1) // Fill the object up with the appropriate reagents. diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 744e212e78..3d4b2b3cfb 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -130,7 +130,7 @@ if(istype(target, /obj/item/weapon/implantcase/chem)) return - if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) + if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/smokable/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) user << "\red You cannot directly fill this object." return if(target.reagents.total_volume >= target.reagents.maximum_volume) diff --git a/code/modules/surgery/eye.dm b/code/modules/surgery/eye.dm index 0fa9f4863a..81170afc39 100644 --- a/code/modules/surgery/eye.dm +++ b/code/modules/surgery/eye.dm @@ -113,7 +113,7 @@ /datum/surgery_step/eye/cauterize allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index 50fb64990b..b5b22659f4 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -103,7 +103,7 @@ /datum/surgery_step/face/cauterize allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 238657c28d..4e8c4150ae 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -239,7 +239,7 @@ /datum/surgery_step/generic/cauterize allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index 76ad0b6201..85a56a754e 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -119,7 +119,7 @@ /datum/surgery_step/head/prepare allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 32546da143..7218c302d0 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -70,7 +70,7 @@ priority = 2 allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index c1328227ac..7e768bfa06 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -93,7 +93,7 @@ /datum/surgery_step/limb/prepare allowed_tools = list( /obj/item/weapon/cautery = 100, \ - /obj/item/clothing/mask/cigarette = 75, \ + /obj/item/clothing/mask/smokable/cigarette = 75, \ /obj/item/weapon/flame/lighter = 50, \ /obj/item/weapon/weldingtool = 25 ) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index a8e83d5c20..1eac9b7512 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3918,7 +3918,7 @@ "bxr" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "bxs" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/maintenance/substation/command) "bxt" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bxu" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/storage/box/matches,/obj/item/clothing/mask/cigarette/cigar,/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) +"bxu" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/storage/box/matches,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bxv" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"; req_access_txt = "0"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "bxw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "bxx" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/chemistry) @@ -5686,7 +5686,7 @@ "cfr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) "cfs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cfu" = (/obj/item/clothing/mask/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) +"cfu" = (/obj/item/clothing/mask/smokable/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfv" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/construction) "cfx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/construction) @@ -7224,7 +7224,7 @@ "cKZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "cLa" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engine_waste) "cLb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 2903dec322..111ddb95ec 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -810,7 +810,7 @@ "pD" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pE" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced{icon_state = "table"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "pF" = (/turf/unsimulated/wall,/area/centcom/living) -"pG" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"pG" = (/obj/machinery/vending/cigarette{contraband = newlist(); premium = newlist(); prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15, /obj/item/weapon/storage/box/matches = 1, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 20); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pH" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/flasher_button{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0; tag = "permflash"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pI" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "pJ" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "smindicate"},/obj/machinery/door/window{dir = 4; name = "Blast Door Control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -1312,7 +1312,7 @@ "zl" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "zm" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "zn" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_centcom_dock_door"; locked = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom) -"zo" = (/obj/structure/table/woodentable{dir = 9},/obj/item/weapon/reagent_containers/food/drinks/flask,/obj/item/clothing/mask/cigarette/cigar/havana,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) +"zo" = (/obj/structure/table/woodentable{dir = 9},/obj/item/weapon/reagent_containers/food/drinks/flask,/obj/item/clothing/mask/smokable/cigarette/cigar/havana,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zp" = (/obj/machinery/computer/security/telescreen{name = "Spec. Ops. Monitor"; network = list("ERT")},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zq" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "zr" = (/obj/machinery/computer/card/centcom,/obj/item/weapon/card/id/centcom,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)