/obj/item/clothing/mask/chewable name = "chewable item master" desc = "If you are seeing this, ahelp it." icon = 'icons/inventory/face/item.dmi' drop_sound = 'sound/items/drop/food.ogg' body_parts_covered = 0 var/type_butt = null var/chem_volume = 0 var/chewtime = 0 var/brand var/list/filling = list() 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() cut_overlays() if(wrapped) add_overlay("[initial(icon_state)]_wrapper") /obj/item/clothing/mask/chewable/Initialize(mapload) . = ..() 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 for(var/R in filling) reagents.add_reagent(R, filling[R]) if(wrapped) slot_flags = null /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(mob/user) 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) else STOP_PROCESSING(SSprocessing, src) /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 ash-tray when you stuff it into your face." throw_speed = 0.5 icon_state = "chew" type_butt = /obj/item/trash/spitwad w_class = 1 slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 brand = "tobacco" /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/cheap name = "chewing tobacco" desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it tastes less like an ash-tray when you stuff it into your face." filling = list(REAGENT_ID_NICOTINE = 2) /obj/item/clothing/mask/chewable/tobacco/fine name = "deluxe chewing tobacco" desc = "A chewy wad of fine tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ash-tray when you stuff it into your face." filling = list(REAGENT_ID_NICOTINE = 3) /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." icon_state = "nic_gum" type_butt = /obj/item/trash/spitgum wrapped = TRUE /obj/item/clothing/mask/chewable/tobacco/nico/Initialize(mapload) . = ..() reagents.add_reagent(REAGENT_ID_NICOTINE, 2) color = reagents.get_color() /obj/item/storage/chewables name = "box of chewing wads master" desc = "A generic brand of Waffle Co Wads, unflavored chews. Why do these exist?" icon = 'icons/obj/cigarettes.dmi' icon_state = "cigpacket" item_state = "cigpacket" drop_sound = 'sound/items/drop/shovel.ogg' use_sound = 'sound/items/storage/pillbottle.ogg' w_class = 2 throwforce = 2 slot_flags = SLOT_BELT starts_with = list(/obj/item/clothing/mask/chewable/tobacco = 6) /obj/item/storage/chewables/Initialize(mapload) . = ..() make_exact_fit() //Tobacco Tins /obj/item/storage/chewables/tobacco name = "tin of Al Mamun Smooth chewing tobacco" desc = "Packaged and shipped straight from Kishar, popularised by the biosphere farmers of Kanondaga." icon_state = "chew_generic" item_state = "cigpacket" starts_with = list(/obj/item/clothing/mask/chewable/tobacco/cheap = 6) storage_slots = 6 /obj/item/storage/chewables/tobacco/fine name = "tin of Suamalie chewing tobacco" desc = "Once reserved for the first-class tourists of Oasis, this premium blend has been released for the public to enjoy." icon_state = "chew_fine" item_state = "Dpacket" starts_with = list(/obj/item/clothing/mask/chewable/tobacco/fine = 6) /obj/item/storage/box/fancy/chewables/tobacco/nico name = "box of Nico-Tine gum" desc = "A government doctor approved brand of nicotine gum. Cut out the middleman for your addiction fix." icon = 'icons/obj/cigarettes.dmi' icon_state = "chew_nico" item_state = "Epacket" starts_with = list(/obj/item/clothing/mask/chewable/tobacco/nico = 6) storage_slots = 6 drop_sound = 'sound/items/drop/box.ogg' use_sound = 'sound/items/storage/box.ogg' var/open = 0 var/open_state var/closed_state /obj/item/storage/box/fancy/chewables/tobacco/nico/Initialize(mapload) if(!open_state) open_state = "[initial(icon_state)]0" if(!closed_state) closed_state = "[initial(icon_state)]" . = ..() /obj/item/storage/box/fancy/chewables/tobacco/nico/update_icon() cut_overlays() if(open) icon_state = open_state if(contents.len >= 1) add_overlay("chew_nico[contents.len]") else icon_state = closed_state /obj/item/storage/box/fancy/chewables/tobacco/nico/open(mob/user as mob) if(open) return open = TRUE if(contents.len == 0) icon_state = "[initial(icon_state)]_empty" else update_icon() ..() /obj/item/storage/box/fancy/chewables/tobacco/nico/close(mob/user as mob) open = FALSE if(contents.len == 0) icon_state = "[initial(icon_state)]_empty" else update_icon() ..() /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 = 1 slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 filling = list(REAGENT_ID_SUGAR = 2) /obj/item/clothing/mask/chewable/candy/gum name = "chewing gum" desc = "A chewy wad of fine synthetic rubber and artificial flavoring. Be sure to unwrap it, genius." icon_state = "gum" item_state = "gum" wrapped = TRUE /obj/item/clothing/mask/chewable/candy/gum/Initialize(mapload) . = ..() reagents.add_reagent(pick(REAGENT_ID_BANANA,REAGENT_ID_BERRYJUICE,REAGENT_ID_GRAPEJUICE,REAGENT_ID_LEMONJUICE,REAGENT_ID_LIMEJUICE,REAGENT_ID_ORANGEJUICE,REAGENT_ID_WATERMELONJUICE),10) color = reagents.get_color() update_icon() /obj/item/storage/box/gum name = "\improper Frooty-Choos flavored gum" desc = "A small pack of chewing gum in various flavors." description_fluff = "Frooty-Choos is NanoTrasen's top-selling brand of artificially flavoured fruit-adjacent non-swallowable chew-product. This extremely specific definition places sales figures safely away from competing 'gum' brands." icon = 'icons/obj/food_snacks.dmi' icon_state = "gum_pack" item_state = "candy" slot_flags = SLOT_EARS w_class = 1 starts_with = list(/obj/item/clothing/mask/chewable/candy/gum = 5) can_hold = list(/obj/item/clothing/mask/chewable/candy/gum, /obj/item/trash/spitgum) use_sound = 'sound/items/drop/paper.ogg' drop_sound = 'sound/items/drop/wrapper.ogg' max_storage_space = 5 foldable = null trash = /obj/item/trash/gumpack /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. Make sure to unwrap it, genius." type_butt = /obj/item/trash/lollibutt icon_state = "lollipop" item_state = "lollipop" wrapped = TRUE var/list/victims = null // CHOMPAdd /obj/item/clothing/mask/chewable/candy/lolli/process() chew() if(chewtime < 1) spitout(0) // CHOMPAdd Start /obj/item/clothing/mask/chewable/candy/lolli/container_resist(mob/living/M) if(istype(M, /mob/living/voice)) return if(victims) victims -= M to_chat(M, span_warning("You manage to pull yourself free of \the [src].")) M.forceMove(get_turf(src)) /obj/item/clothing/mask/chewable/candy/lolli/chew() if(victims && victims.len && prob(2)) for(var/mob/living/F in victims) var/message = pick( "The tongue swishes you around and presses you against the candy!", "You get tossed about in the mouth, between candy and tongue!", "The sweet drool of your captor permeates you...", "The candy sticks to you, not allowing you to leave the mouth at all!", "You get squeezed under the candy, against the tongue!") to_chat(F, span_notice(message)) return ..() /obj/item/clothing/mask/chewable/candy/lolli/spitout() if(victims && victims.len) var/mob/living/M = loc if(M.can_be_drop_pred && M.food_vore && M.vore_selected) for(var/mob/living/F in victims) if(!F.can_be_drop_prey || !F.food_vore) to_chat(F, span_warning("You manage to pull yourself free of \the [src] at the last second!")) to_chat(M, span_notice("[F] barely escapes from your mouth!")) F.forceMove(get_turf(src)) else F.forceMove(M.vore_selected) victims -= F return ..() /obj/item/clothing/mask/chewable/candy/lolli/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/holder)) if(!(istype(W, /obj/item/holder/micro) || istype(W, /obj/item/holder/mouse))) . = ..() return if(wrapped) to_chat(user, span_warning("You cannot stick [W] to \the [src] without unwrapping it!")) return var/obj/item/holder/H = W if(!victims) victims = list() var/mob/living/M = H.held_mob M.forceMove(src) H.held_mob = null user.drop_from_inventory(H) qdel(H) victims += M to_chat(user, span_notice("You stick [M] to \the [src].")) to_chat(M, span_warning("[user] sticks you to \the [src]!")) return /obj/item/clothing/mask/chewable/candy/lolli/examine(mob/user) . = ..() if(Adjacent(user)) if(victims && victims.len) . += span_notice("It has [english_list(victims)] stuck on it.") // CHOMPAdd End /obj/item/clothing/mask/chewable/candy/lolli/Initialize(mapload) . = ..() reagents.add_reagent(pick(REAGENT_ID_BANANA,REAGENT_ID_BERRYJUICE,REAGENT_ID_GRAPEJUICE,REAGENT_ID_LEMONJUICE,REAGENT_ID_LIMEJUICE,REAGENT_ID_ORANGEJUICE,REAGENT_ID_WATERMELONJUICE),20) color = reagents.get_color() update_icon() /obj/item/storage/box/pocky name = "\improper Totemo yoi Pocky" desc = "A bundle of chocolate-coated bisquit sticks." icon = 'icons/obj/food_snacks.dmi' icon_state = "pockys" item_state = "pocky" w_class = 1 starts_with = list(/obj/item/clothing/mask/chewable/candy/pocky = 8) can_hold = list(/obj/item/clothing/mask/chewable/candy/pocky) use_sound = 'sound/items/drop/paper.ogg' drop_sound = 'sound/items/drop/wrapper.ogg' max_storage_space = 8 foldable = null trash = /obj/item/trash/pocky /obj/item/clothing/mask/chewable/candy/pocky name = "chocolate pocky" desc = "A chocolate-coated biscuit stick." icon_state = "pockystick" item_state = "pocky" filling = list(REAGENT_ID_SUGAR = 2, REAGENT_ID_CHOCOLATE = 5) type_butt = null /obj/item/clothing/mask/chewable/candy/pocky/process() chew() if(chewtime < 1) if(ismob(loc)) to_chat(loc, span_notice("There's no more of \the [name] left!")) spitout(0)