/obj/item/clothing/mask/chewable name = "chewable item master" desc = "If you are seeing this, ahelp it." icon = 'icons/obj/clothing/masks.dmi' drop_sound = 'sound/items/drop/food.ogg' pickup_sound = 'sound/items/pickup/food.ogg' body_parts_covered = 0 var/damage_per_crunch // if set to a number, chewing something will cause this amount of damage in brute and half of it in pain. var/crunching = FALSE var/type_butt = null var/chem_volume = 0 var/chewtime = 0 var/brand var/wrapped = FALSE /obj/item/clothing/mask/chewable/attack_self(mob/user) if(wrapped) wrapped = FALSE to_chat(user, SPAN_NOTICE("You unwrap \the [name].")) playsound(src.loc, 'sound/items/drop/wrapper.ogg', 50, 1) slot_flags = SLOT_EARS | SLOT_MASK update_icon() /obj/item/clothing/mask/chewable/update_icon() ClearOverlays() if(wrapped) var/mutable_appearance/base_overlay = mutable_appearance(icon, "[initial(icon_state)]_wrapper") base_overlay.appearance_flags = RESET_COLOR AddOverlays(base_overlay) /obj/item/clothing/mask/chewable/Initialize() create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15 . = ..() atom_flags |= ATOM_FLAG_NO_REACT // so it doesn't react until you light it if(wrapped) slot_flags = null update_icon() /obj/item/clothing/mask/chewable/equipped(var/mob/living/user, var/slot) ..() if(slot == slot_wear_mask) var/mob/living/carbon/human/C = user if(C.check_has_mouth()) START_PROCESSING(SSprocessing, src) else to_chat(user, SPAN_NOTICE("You don't have a mouth, and can't make much use of \the [src].")) /obj/item/clothing/mask/chewable/dropped() STOP_PROCESSING(SSprocessing, src) ..() /obj/item/clothing/mask/chewable/Destroy() . = ..() STOP_PROCESSING(SSprocessing, src) /obj/item/clothing/mask/chewable/proc/chew() chewtime-- if(reagents && reagents.total_volume) if(ishuman(loc)) var/mob/living/carbon/human/C = loc if (src == C.wear_mask && C.check_has_mouth()) reagents.trans_to_mob(C, REM, CHEM_INGEST, 0.2) if(isnum(damage_per_crunch && !crunching)) addtimer(CALLBACK(src, PROC_REF(damagecrunch), C), 50, TIMER_UNIQUE) crunching = TRUE else STOP_PROCESSING(SSprocessing, src) /obj/item/clothing/mask/chewable/proc/damagecrunch(mob/living/carbon/human/user) if(src == user.wear_mask) // are we still chewing the gum? user.apply_damage(damage_per_crunch, DAMAGE_BRUTE, BP_HEAD) user.apply_damage(damage_per_crunch/2, DAMAGE_PAIN, BP_HEAD) to_chat(user, SPAN_DANGER("You bite down hard on \the [name]!")) crunching = FALSE /obj/item/clothing/mask/chewable/process() chew() if(chewtime < 1) spitout() /obj/item/clothing/mask/chewable/tobacco name = "wad" desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ashtray when you stuff it into your face." throw_speed = 0.5 icon_state = "chew" type_butt = /obj/item/trash/spitwad w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 brand = "tobacco" /obj/item/trash/spitwad name = "spit wad" desc = "A disgusting spitwad." icon = 'icons/obj/clothing/masks.dmi' icon_state = "spit-chew" drop_sound = 'sound/items/drop/flesh.ogg' pickup_sound = 'sound/items/pickup/flesh.ogg' slot_flags = SLOT_EARS | SLOT_MASK /obj/item/clothing/mask/chewable/proc/spitout(var/transfer_color = 1, var/no_message = 0) if(type_butt) var/obj/item/butt = new type_butt(src.loc) transfer_fingerprints_to(butt) if(transfer_color) butt.color = color if(brand) butt.desc += " This one is \a [brand]." if(ismob(loc)) var/mob/living/M = loc if(!no_message) to_chat(M, SPAN_NOTICE("The [name] runs out of flavor.")) if(M.wear_mask) M.remove_from_mob(src) //un-equip it so the overlays can update M.update_inv_wear_mask(0) if(!M.equip_to_slot_if_possible(butt, slot_wear_mask)) M.update_inv_l_hand(0) M.update_inv_r_hand(1) M.put_in_hands(butt) STOP_PROCESSING(SSprocessing, src) qdel(src) /obj/item/clothing/mask/chewable/tobacco/bad name = "chewing tobacco" desc = "A chewy wad of cheap tobacco. Cut in long strands and treated with syrup so it tastes less like an ashtray when you stuff it into your face." reagents_to_add = list(/singleton/reagent/toxin/tobacco/fake = 2) /obj/item/clothing/mask/chewable/tobacco/generic name = "chewing tobacco" desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ashtray when you stuff it into your face." reagents_to_add = list(/singleton/reagent/toxin/tobacco = 2) /obj/item/clothing/mask/chewable/tobacco/fine name = "chewing tobacco" desc = "A chewy wad of fine tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ashtray when you stuff it into your face." reagents_to_add = list(/singleton/reagent/toxin/tobacco/rich = 2) /obj/item/clothing/mask/chewable/tobacco/nico name = "nicotine gum" desc = "A chewy wad of synthetic rubber, laced with nicotine. Possibly the least disgusting method of nicotine delivery." reagents_to_add = list(/singleton/reagent/mental/nicotine = 2) icon_state = "nic_gum" type_butt = /obj/item/trash/spitgum wrapped = TRUE /obj/item/clothing/mask/chewable/tobacco/sweet name = "chewing tobacco" desc = "A chewy wad of sweet tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ashtray when you stuff it in your face." reagents_to_add = list(/singleton/reagent/toxin/tobacco/sweet = 2) /obj/item/clothing/mask/chewable/tobacco/dyn name = "dyn chewing tobacco" desc = "A chewy wad of menthol tobacco. Cut in long strands and treated with syrup and menthol so it doesn't taste like an ashtray when you stuff it into your face." reagents_to_add = list( /singleton/reagent/toxin/tobacco/sweet = 1, /singleton/reagent/drink/dynjuice = 1 ) /obj/item/clothing/mask/chewable/oracle name = "chewing oracle" desc = "A chewy wad of oracle. Cut in long strands." throw_speed = 0.5 icon_state = "chew" type_butt = /obj/item/trash/spitwad w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 brand = "oracle" reagents_to_add = list(/singleton/reagent/toxin/oracle = 2) /obj/item/clothing/mask/chewable/candy name = "wad" desc = "A chewy wad of wadding material." throw_speed = 0.5 icon_state = "chew" type_butt = /obj/item/trash/spitgum w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 reagents_to_add = list(/singleton/reagent/sugar = 2) /obj/item/clothing/mask/chewable/chewingkoko name = "wad" desc = "A sweet chewy wad of koko reeds, treated with a persevative syrup." throw_speed = 0.5 icon_state = "chew" type_butt = /obj/item/trash/spitwad w_class = WEIGHT_CLASS_TINY slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 brand = "koko" reagents_to_add = list(/singleton/reagent/mental/kokoreed = 7) /obj/item/trash/spitgum name = "old gum" desc = "A disgusting chewed up wad of gum." icon = 'icons/obj/clothing/masks.dmi' icon_state = "spit-gum" drop_sound = 'sound/items/drop/flesh.ogg' pickup_sound = 'sound/items/pickup/flesh.ogg' slot_flags = SLOT_EARS | SLOT_MASK /obj/item/clothing/mask/chewable/candy/gum name = "chewing gum" desc = "A chewy wad of fine synthetic rubber and artificial flavoring." icon_state = "gum" wrapped = TRUE /obj/item/clothing/mask/chewable/candy/gum/Initialize() . = ..() reagents.add_reagent(pick(/singleton/reagent/drink/banana,/singleton/reagent/drink/berryjuice,/singleton/reagent/drink/grapejuice,/singleton/reagent/drink/lemonjuice,/singleton/reagent/drink/limejuice,/singleton/reagent/drink/orangejuice,/singleton/reagent/drink/watermelonjuice),10) color = reagents.get_color() update_icon() /obj/item/clothing/mask/chewable/candy/gum/gumball name = "\improper gumball" desc = "A gumball, created and patented by Chip Getmore. Known to contain a hard shell and a reagent interior!" icon_state = "gumball" item_state = null wrapped = FALSE /obj/item/clothing/mask/chewable/candy/gum/gumball/medical reagents_to_add = list(/singleton/reagent/tricordrazine = 5) /obj/item/clothing/mask/chewable/candy/lolli name = "lollipop" desc = "A simple artificially flavored sphere of sugar on a handle, colloquially known as a sucker. Allegedly one is born every minute." type_butt = /obj/item/trash/lollibutt icon_state = "lollipop" item_state = "lollipop" wrapped = TRUE /obj/item/trash/lollibutt name = "lollipop stick" desc = "A lollipop stick devoid of pop." icon = 'icons/obj/clothing/masks.dmi' icon_state = "lollipop_stick" slot_flags = SLOT_EARS | SLOT_MASK /obj/item/clothing/mask/chewable/candy/lolli/process() chew() if(chewtime < 1) spitout(0) /obj/item/clothing/mask/chewable/candy/lolli/update_icon() ClearOverlays() var/mutable_appearance/base_overlay = mutable_appearance(icon, "[initial(icon_state)]_stick") base_overlay.appearance_flags = RESET_COLOR AddOverlays(base_overlay) if(wrapped) AddOverlays("[initial(icon_state)]_wrapper") /obj/item/clothing/mask/chewable/candy/lolli/Initialize() . = ..() reagents.add_reagent(pick(/singleton/reagent/drink/banana,/singleton/reagent/drink/berryjuice,/singleton/reagent/drink/grapejuice,/singleton/reagent/drink/lemonjuice,/singleton/reagent/drink/limejuice,/singleton/reagent/drink/orangejuice,/singleton/reagent/drink/watermelonjuice),20) color = reagents.get_color() update_icon() /obj/item/clothing/mask/chewable/candy/lolli/meds name = "lollipop" desc = "A sucrose sphere on a small handle, it has been infused with medication." type_butt = /obj/item/trash/lollibutt icon_state = "lollipop" /obj/item/clothing/mask/chewable/candy/lolli/meds/Initialize() . = ..() var/singleton/reagent/payload = pick(list( /singleton/reagent/perconol, /singleton/reagent/mortaphenyl, /singleton/reagent/dylovene)) reagents.add_reagent(payload, 15) color = reagents.get_color() desc = "[desc] This one is labeled '[initial(payload.name)]'." /obj/item/clothing/mask/chewable/candy/lolli/weak_meds name = "medicine lollipop" desc = "A sucrose sphere on a small handle, it has been infused with medication." reagents_to_add = list(/singleton/reagent/sugar = 6) /obj/item/clothing/mask/chewable/candy/lolli/weak_meds/Initialize() . = ..() var/singleton/reagent/payload = pick(list( /singleton/reagent/dylovene, /singleton/reagent/inaprovaline)) reagents.add_reagent(payload, 15) color = reagents.get_color() desc = "[desc] This one is labeled '[initial(payload.name)]'."