diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 8f21ab7b1c..f66a391a14 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -77,6 +77,7 @@ #define COLOR_PURPLE_GRAY "#A2819E" #define COLOR_RED_LIGHT "#FF3333" #define COLOR_DEEP_SKY_BLUE "#00e1ff" +#define COLOR_DARK_GRAY "#404040" diff --git a/code/datums/autolathe/general.dm b/code/datums/autolathe/general.dm index 6ec648d388..048842b301 100644 --- a/code/datums/autolathe/general.dm +++ b/code/datums/autolathe/general.dm @@ -129,6 +129,10 @@ name = "maglight" path =/obj/item/device/flashlight/maglight +/datum/category_item/autolathe/general/ecigcartridge + name = "ecigarette cartridge" + path = /obj/item/weapon/reagent_containers/ecig_cartridge/blank + /datum/category_item/autolathe/general/handcuffs name = "handcuffs" path =/obj/item/weapon/handcuffs diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 6739452da3..a18f4500a0 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -842,7 +842,19 @@ /obj/item/weapon/storage/fancy/cigarettes/menthols = 5, /obj/item/weapon/storage/rollingpapers = 5, /obj/item/weapon/storage/box/matches = 10, - /obj/item/weapon/flame/lighter/random = 4) + /obj/item/weapon/flame/lighter/random = 4, + /obj/item/clothing/mask/smokable/ecig/util = 2, + ///obj/item/clothing/mask/smokable/ecig/deluxe = 2, + /obj/item/clothing/mask/smokable/ecig/simple = 2, + /obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine = 10, + /obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/orange = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/mint = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/watermelon = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/grape = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/coffee = 5, + /obj/item/weapon/reagent_containers/ecig_cartridge/blanknico = 2) contraband = list(/obj/item/weapon/flame/lighter/zippo = 4) premium = list(/obj/item/weapon/storage/fancy/cigar = 5, /obj/item/weapon/storage/fancy/cigarettes/carcinomas = 5, @@ -855,7 +867,20 @@ /obj/item/weapon/storage/fancy/cigarettes/menthols = 18, /obj/item/weapon/storage/rollingpapers = 10, /obj/item/weapon/storage/box/matches = 1, - /obj/item/weapon/flame/lighter/random = 2) + /obj/item/weapon/flame/lighter/random = 2, + /obj/item/clothing/mask/smokable/ecig/util = 100, + ///obj/item/clothing/mask/smokable/ecig/deluxe = 300, + /obj/item/clothing/mask/smokable/ecig/simple = 150, + /obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine = 10, + /obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/orange = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/mint = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/watermelon = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/grape = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/coffee = 15, + /obj/item/weapon/reagent_containers/ecig_cartridge/blanknico = 15) + /obj/machinery/vending/medical name = "NanoMed Plus" diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 759ae702ab..608a79eccc 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -274,6 +274,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM max_smoketime = 300 smoketime = 300 var/nicotine_amt = 2 + var/menthol_amt = 0 matchmes = "USER lights their NAME with their FLAME." lightermes = "USER manages to light their NAME with FLAME." zippomes = "With a flick of their wrist, USER lights their NAME with their FLAME." @@ -284,6 +285,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM . = ..() if(nicotine_amt) reagents.add_reagent("nicotine", nicotine_amt) + if(menthol_amt) + reagents.add_reagent("menthol", nicotine_amt) + +/obj/item/clothing/mask/smokable/cigarette/menthol + menthol_amt = 5 /obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() diff --git a/code/game/objects/items/weapons/ecigs.dm b/code/game/objects/items/weapons/ecigs.dm new file mode 100644 index 0000000000..961f17e667 --- /dev/null +++ b/code/game/objects/items/weapons/ecigs.dm @@ -0,0 +1,227 @@ +/obj/item/clothing/mask/smokable/ecig + name = "electronic cigarette" + desc = "Device with modern approach to smoking." + icon = 'icons/obj/ecig.dmi' + var/active = 0 + //var/obj/item/weapon/cell/ec_cell = /obj/item/weapon/cell/device + var/cartridge_type = /obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine + var/obj/item/weapon/reagent_containers/ecig_cartridge/ec_cartridge + w_class = ITEMSIZE_TINY + slot_flags = SLOT_EARS | SLOT_MASK + attack_verb = list("attacked", "poked", "battered") + body_parts_covered = 0 + var/brightness_on = 1 + chem_volume = 0 //ecig has no storage on its own but has reagent container created by parent obj + item_state = "ecigoff" + var/icon_off + var/icon_empty + var/ecig_colors = list(null, COLOR_DARK_GRAY, COLOR_RED_GRAY, COLOR_BLUE_GRAY, COLOR_GREEN_GRAY, COLOR_PURPLE_GRAY) + +/obj/item/clothing/mask/smokable/ecig/New() + ..() + ec_cartridge = new cartridge_type(src) + +/obj/item/clothing/mask/smokable/ecig/simple + name = "simple electronic cigarette" + desc = "A cheap Lucky 1337 electronic cigarette, styled like a traditional cigarette." + icon_state = "ccigoff" + icon_off = "ccigoff" + icon_empty = "ccigoff" + icon_on = "ccigon" + +/obj/item/clothing/mask/smokable/ecig/util + name = "electronic cigarette" + desc = "A popular utilitarian model electronic cigarette, the ONI-55. Comes in a variety of colors." + icon_state = "ecigoff1" + icon_off = "ecigoff1" + icon_empty = "ecigoff1" + icon_on = "ecigon" +/obj/item/clothing/mask/smokable/ecig/util/New() + ..() + color = pick(ecig_colors) + +/obj/item/clothing/mask/smokable/ecig/deluxe + name = "deluxe electronic cigarette" + desc = "A premium model eGavana MK3 electronic cigarette, shaped like a cigar." + icon_state = "pcigoff1" + icon_off = "pcigoff1" + icon_empty = "pcigoff2" + icon_on = "pcigon" + +/obj/item/clothing/mask/smokable/ecig/process() + if(ishuman(loc)) + var/mob/living/carbon/human/C = loc + if (src == C.wear_mask && C.check_has_mouth()) // if it's in the human/monkey mouth, transfer reagents to the mob + if (!active || !ec_cartridge || !ec_cartridge.reagents.total_volume)//no cartridge + active=0//autodisable the cigarette + STOP_PROCESSING(SSobj, src) + update_icon() + return + ec_cartridge.reagents.trans_to_mob(C, REM, CHEM_INGEST, 0.4) // Most of it is not inhaled... balance reasons. + +/obj/item/clothing/mask/smokable/ecig/update_icon() + if (active) + item_state = icon_on + icon_state = icon_on + set_light(brightness_on) + else if (ec_cartridge) + set_light(0) + item_state = icon_off + icon_state = icon_off + else + icon_state = icon_empty + item_state = icon_empty + set_light(0) + if(ismob(loc)) + var/mob/living/M = loc + M.update_inv_wear_mask(0) + M.update_inv_l_hand(0) + M.update_inv_r_hand(1) + + +/obj/item/clothing/mask/smokable/ecig/attackby(var/obj/item/I, var/mob/user as mob) + if(istype(I, /obj/item/weapon/reagent_containers/ecig_cartridge)) + if (ec_cartridge)//can't add second one + to_chat(user, "A cartridge has already been installed. ") + else//fits in new one + user.remove_from_mob(I) + I.forceMove(src)//I.loc=src + ec_cartridge = I + update_icon() + to_chat(user, "You insert [I] into [src]. ") + +/obj/item/clothing/mask/smokable/ecig/attack_self(mob/user as mob) + if (active) + active=0 + STOP_PROCESSING(SSobj, src) + to_chat(user, "You turn off \the [src]. ") + update_icon() + else + if (!ec_cartridge) + to_chat(user, "You can't use it with no cartridge installed!. ") + return + active=1 + START_PROCESSING(SSobj, src) + to_chat(user, "You turn on \the [src]. ") + update_icon() + +/obj/item/clothing/mask/smokable/ecig/attack_hand(mob/user as mob)//eject cartridge + if(user.get_inactive_hand() == src)//if being hold + if (ec_cartridge) + active=0 + user.put_in_hands(ec_cartridge) + to_chat(user, "You eject [ec_cartridge] from \the [src]. ") + ec_cartridge = null + update_icon() + else + ..() + +/obj/item/weapon/reagent_containers/ecig_cartridge + name = "tobacco flavour cartridge" + desc = "A small metal cartridge, used with electronic cigarettes, which contains an atomizing coil and a solution to be atomized." + w_class = ITEMSIZE_TINY + icon = 'icons/obj/ecig.dmi' + icon_state = "ecartridge" + matter = list("metal" = 50, "glass" = 10) + volume = 20 + flags = OPENCONTAINER + +/obj/item/weapon/reagent_containers/ecig_cartridge/New() + create_reagents(volume) + +/obj/item/weapon/reagent_containers/ecig_cartridge/examine(mob/user as mob)//to see how much left + ..() + to_chat(user, "The cartridge has [reagents.total_volume] units of liquid remaining.") + +//flavours +/obj/item/weapon/reagent_containers/ecig_cartridge/blank + name = "ecigarette cartridge" + desc = "A small metal cartridge which contains an atomizing coil." + +/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico + name = "flavorless nicotine cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says you can add whatever flavoring agents you want." +/obj/item/weapon/reagent_containers/ecig_cartridge/blanknico/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + +/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine + name = "tobacco flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/med_nicotine/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 15) + +/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine + name = "high nicotine tobacco flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored, with extra nicotine." +/obj/item/weapon/reagent_containers/ecig_cartridge/high_nicotine/New() + ..() + reagents.add_reagent("nicotine", 10) + reagents.add_reagent("water", 10) + +/obj/item/weapon/reagent_containers/ecig_cartridge/orange + name = "orange flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its orange flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/orange/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("orangejuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/mint + name = "mint flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its mint flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/mint/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("menthol", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon + name = "watermelon flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its watermelon flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/watermelon/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("watermelonjuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/grape + name = "grape flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its grape flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/grape/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("grapejuice", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime + name = "lemon-lime flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its lemon-lime flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/lemonlime/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("lemon_lime", 5) + +/obj/item/weapon/reagent_containers/ecig_cartridge/coffee + name = "coffee flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its coffee flavored." +/obj/item/weapon/reagent_containers/ecig_cartridge/coffee/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("coffee", 5) +/* +/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis + name = "herb flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label seems to be suspiciously scuffed off..." +/obj/item/weapon/reagent_containers/ecig_cartridge/cannabis/New() + ..() + reagents.add_reagent("nicotine", 5) + reagents.add_reagent("water", 10) + reagents.add_reagent("cannabis", 5) +*/ diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 830f5a2631..a8f5ef34e8 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -296,6 +296,7 @@ desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!" icon_state = "TMpacket" brand = "\improper Temperamento Menthol" + starts_with = list(/obj/item/clothing/mask/smokable/cigarette/menthol = 6) /obj/item/weapon/storage/fancy/cigarettes/carcinomas name = "\improper pack of Carcinoma Angels" diff --git a/code/modules/client/preference_setup/loadout/loadout_smoking.dm b/code/modules/client/preference_setup/loadout/loadout_smoking.dm index cbedca3a67..d2097c06be 100644 --- a/code/modules/client/preference_setup/loadout/loadout_smoking.dm +++ b/code/modules/client/preference_setup/loadout/loadout_smoking.dm @@ -50,3 +50,12 @@ var/obj/item/weapon/storage/fancy/cigarettes/cigarette_brand = cigarette cigarettes[initial(cigarette_brand.name)] = cigarette_brand gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cigarettes)) + +/datum/gear/ecig + display_name = "electronic cigarette" + path = /obj/item/clothing/mask/smokable/ecig/util + +/datum/gear/ecig/deluxe + display_name = "electronic cigarette, deluxe" + path = /obj/item/clothing/mask/smokable/ecig/deluxe + cost = 2 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 2ba09e0c36..3423086771 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -1377,3 +1377,13 @@ M.adjustOxyLoss(-4 * removed) M.adjustToxLoss(-2 * removed) M.adjustCloneLoss(-2 * removed) + +/datum/reagent/menthol + name = "Menthol" + description = "Tastes naturally minty, and imparts a very mild numbing sensation." + taste_description = "mint" + reagent_state = LIQUID + color = "#80af9c" + metabolism = REM * 0.002 + overdose = REAGENTS_OVERDOSE * 0.25 + scannable = 1 diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index 5403cac867..1fb8bea105 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index 1c92dc0afd..02990b507a 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index fd1af6e950..4d17629759 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/obj/ecig.dmi b/icons/obj/ecig.dmi new file mode 100644 index 0000000000..1b6dde8c4b Binary files /dev/null and b/icons/obj/ecig.dmi differ diff --git a/polaris.dme b/polaris.dme index d1483f5c7a..a7d01bd843 100644 --- a/polaris.dme +++ b/polaris.dme @@ -993,6 +993,7 @@ #include "code\game\objects\items\weapons\clown_items.dm" #include "code\game\objects\items\weapons\cosmetics.dm" #include "code\game\objects\items\weapons\dna_injector.dm" +#include "code\game\objects\items\weapons\ecigs.dm" #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\extinguisher.dm" #include "code\game\objects\items\weapons\flamethrower.dm"